【问题标题】:Scala: for loop until conditionScala:for循环直到条件
【发布时间】:2013-12-09 19:39:10
【问题描述】:

如何运行for 直到满足条件?除了使用scala.util.control.Breaks.break,是否可以测试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 =>{

【问题讨论】:

  • 你应该像这样使用takeWhilefor(line &lt;- source.getLines.takeWhile{_ != ""})
  • 谢谢@senia!使用!= 来比较Strings 是否安全,而不是!equals("")
  • 是的。在scala 中,==equals 的空安全等效项(它调用equals)。还有另一个用于引用相等的运算符(你不需要它)。

标签: scala for-loop conditional-statements


【解决方案1】:

试试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)
}

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多