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
版权所有 © 转载时必须以链接形式注明作者和原始出处!