0

下面代码中 <- 子句的含义是什么?像作业吗?

class Nested {

  var filesHere = (new java.io.File(".")).listFiles()

  def fileLines(file: java.io.File) =
    scala.io.Source.fromFile(file).getLines().toList

  def grep(pattern: String) =
    for (
      file <- filesHere 
      if (file.getName.endsWith(".scala"));
      line <- fileLines(file) 
      if line.trim().matches(pattern)
    ) println(file + ": " + line.trim)

}
4

3 回答 3

3

它不太像赋值:更像是一个 for-each 循环,但更好。你可以在这里阅读。

scala> for(i <- List(1,2,3,4)) println(i)
1
2
3
4

i所以这基本上说,对于集合中的每个单独项目List(1,2,3,4),调用println(i).

于 2012-09-17T21:56:23.010 回答
1

我发音<-为“in”。所以我会把代码读作“对于filesHere中的每个文件......”。运算符的作用与:Java foreach 循环中的运算符相同。

于 2012-09-17T21:57:24.447 回答
0

我认为这是“for each ... from”语法,所以我会阅读您的示例

for (
  file <- filesHere
  ...
)

如:“对于来自filesHere的每个文件”

于 2014-05-21T11:18:16.490 回答