標準入力が閉じられるまで
入力を1行ずつ取得して処理し、
閉じられたらその処理を終わりたい場合には、
generateSequence { readLine() }
を使うとよい。
例えば入力をそのまま標準出力するのであれば次のようになる。
fun main() {
generateSequence {
readLine()
}.forEach {
println(it);
}
}
readLine
は呼び出すたびに標準入力から1行取得して返し、標準入力が閉じられたら null
を返す。
generateSequence
は Sequence
を生成する。その Sequence
は、引数として受け取った関数が返した値を要素とし、その関数が null
を返せば終端する。
従って generateSequence { readLine() }
は標準入力が閉じられるまで入力を1行ずつ取得して要素とする Sequence
を生成する。
/以上