gpt4 book ai didi

scala - yield 语法

转载 作者:行者123 更新时间:2023-12-02 17:29:42 24 4
gpt4 key购买 nike

我正在阅读一本有关 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?
}

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

最佳答案

简单地说,任何表达式(即使是返回 Unit 的表达式),但您必须将该表达式括在方括号中或将其下拉(仅适用于单个语句表达式):

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
}

关于scala - yield 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com