交叉半结肠用于花括号

时间:2016-11-06 22:02:44

标签: scala

在“Scala编程”一书中,它说:

"您可以使用花括号而不是括号来围绕生成器和过滤器。使用花括号的一个优点是,当您使用括号时,可以省去一些所需的半冒号"。

我试图用这段代码做这件事,但似乎无法管理它。你能为我填写他们,这样我就可以看到这是怎么做的。

由于

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")); //I dont want to use this semi-colon
  line<-fileLines(file)
  if(line.trim.matches(pattern))
    )
  println(file +":" + line.trim)

val filesHere = new java.io.File(".").listFiles;
grep(".*gcd.*")

1 个答案:

答案 0 :(得分:1)

您只需将for-comprehesion中的括号更改为花括号(正如本书所述):

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