https://kotlinlang.org logo
Title
c

chb0kotlin

12/22/2017, 5:58 PM
Is there a more Kotlin idiomatic way of writing this class:
class CompositeReader(private var readers: List<Reader> = listOf()) : Reader() {
    override fun close() = readers.forEach(Reader::close)

    override fun read(cbuf: CharArray?, off: Int, len: Int): Int {
        var result = -1

        if (readers.isNotEmpty()) {
            result = readers.first().read(cbuf, off, len)
            if (result == -1) {
                readers = readers.subList(1, readers.lastIndex)
                if (readers.isNotEmpty()) {
                    result = readers.first().read(cbuf, off, len)
                }
            }
        }
        return result
    }


    fun copy(reader: Reader) = CompositeReader(readers = this.readers + reader)

}
s

Shawn

12/22/2017, 6:04 PM
you might consider posting this in a snippet to #codereview