scala用while循环读取reader或者流

2011-12-06 15:07:06.0

Scala中希望通过java的那种方式来读取文件while( (line = reader.readNext()) != null ) { .... }

编译的时候警告 values of types Unit and Null using `!=' will always yield true

原因是scala中并不支持A=B=C这种方式来赋值

搜索了相关资料,可以通过花括号来解决装这个问题

while({line=reader.readNext; line != null})

用花括号来包括一个代码块,这个代码块返回true

不过在scala中不推荐来使用while循环,那我们有其他的方法吗?

val it= Iterator.continually(reader.readNext).takeWhile(_ !=null)
it.foreach(i => println(i.mkString))

可以通过continually方法来返回一个iterator对象,然后就可以使用scala集合的foreach方法了

上面的代码还可以简写为

Iterator.continually(reader.readNext).takeWhile(_ !=null) foreach(i => println(i.mkString))

上面代码中的i 本来想简写为_下划线 但是报错,目前不知道神原因,

另外那个continuall方法也需要去了解下

文章作者:POPO4J
本文地址:http://www.popo4j.com/java/scala_while_yield_true.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!