scala-yield语法

scala-yield语法,scala,yield,Scala,Yield,我正在读一本关于scala编程(scala中的编程)的书,我有一个关于yield语法的问题 根据这本书,yield的语法可以表示为: for子句屈服体 但是当我尝试运行下面的脚本时,编译器抱怨getName的参数太多 def scalaFiles = for ( file <- filesHere if file.isFile if file.getName.endsWith(".scala") ) yield file.getName { //

我正在读一本关于scala编程(scala中的编程)的书,我有一个关于yield语法的问题

根据这本书,yield的语法可以表示为: for子句屈服体

但是当我尝试运行下面的脚本时,编译器抱怨getName的参数太多

def scalaFiles = 
  for (
    file <- filesHere
    if file.isFile
    if file.getName.endsWith(".scala")
  ) yield file.getName {
    // isn't this supposed to be the body part?
  }
def scalaFiles=
为了(
file简而言之,任何表达式(即使是该返回单位),但必须将该表达式括在括号中或直接将其放下(仅适用于单个语句表达式):

下一个选择是:

for(...) yield file.getName
作为提示,你可以改写你的理解,如下所示:

def scalaFiles = 
      for (
        file <- filesHere;
        if file.isFile;
        name = file.getName;
        if name.endsWith(".scala")
      ) yield {
        name
      }
def scalaFiles=
为了(

文件啊,我明白了!谢谢你的回答!
for(...) yield file.getName
def scalaFiles = 
      for (
        file <- filesHere;
        if file.isFile;
        name = file.getName;
        if name.endsWith(".scala")
      ) yield {
        name
      }