加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – yield语法

发布时间:2020-12-16 19:19:06 所属栏目:安全 来源:网络整理
导读:我正在读一本关于 scala编程的书( Scala中的Programming),我对yield语法有一个疑问. 根据这本书,yield的语法可以表示为: ????对于条款产生身体 但是当我尝试运行下面的脚本时,编译器会抱怨getName的参数太多了 def scalaFiles = for ( file - filesHere if
我正在读一本关于 scala编程的书( Scala中的Programming),我对yield语法有一个疑问.

根据这本书,yield的语法可以表示为:
????对于条款产生身体

但是当我尝试运行下面的脚本时,编译器会抱怨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?
  }

所以,我的问题是yield语法的“body”部分是什么,如何使用它?

解决方法

不久,任何表达式(即使返回单位),但您必须将该表达式括在括号中或只是将它们放下(仅适用于单个语句表达式):

def scalaFiles = 
  for (
    file <- filesHere
    if file.isFile
    if file.getName.endsWith(".scala")
  ) yield {
    // here is expression
  }

上面的代码将起作用(但没有任何意义):

scalaFiles: Array[Unit]

下一个选项是:

for(...) yield file.getName

作为提示,你可以改写你的理解:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读