2013-11-25 144 views
3

如何才能運行for,直到滿足條件?而不是使用scala.util.control.Breaks.break,是否可以測試for內的條件?斯卡拉:for循環,直到條件

for(line <- source.getLines) { 
     if (line.equals("")) scala.util.control.Breaks.break 
     Console print "Message> " 
     dataWriter.write(line, InstanceHandle_t.HANDLE_NIL) 
     } 
    } catch { 
     case e: IOException =>{ 
+3

你應該使用'takeWhile'這樣的:'爲(行< - source.getLines.takeWhile {!_ = 「」} )' – senia

+0

謝謝@senia!使用'!='來比較'String',而不是'!equals(「」)'是否安全? – hanxue

+1

是的。在'scala'中''=='是'equals'的空安全等價物(它稱爲'equals')。還有另一個運算符用於引用相等(並且你不需要它)。 – senia

回答

8

嘗試takeWhile

for(line <- source.getLines.takeWhile(!_.isEmpty)) { 
    Console print "Message> " 
    dataWriter.write(line, InstanceHandle_t.HANDLE_NIL) 
} 

source.getLines.takeWhile(!_.isEmpty).foreach { 
    line => 
    Console print "Message> " 
    dataWriter.write(line, InstanceHandle_t.HANDLE_NIL) 
}