作为 scala 的初学者,我在 scala 中编写了一个返回另一个函数的方法:
def foo(fnords: Seq[Fnord]): Poit => Boolean {
(poit: Poit) => {
fnords.contains(poit.fnord)
}
}
我注意到我经常对自己的代码行感到困惑,想知道为什么我会回来
fnords.contains(poit.fnord)
即使我实际上正确地返回了整个函数:
(poit: Poit) => {
fnords.contains(poit.fnord)
}
我想知道是否可以让人眼更明确地返回可调用对象,或者这是否是编写 scala 时必须习惯的事情。
我发现可能的方法是显式使用return
,然后 linter 通过"return 关键字是多余的"发出警告:
def foo(fnords: Seq[Fnord]): Poit => Boolean {
return (poit: Poit) => {
fnords.contains(poit.fnord)
}
}
我知道我可以将函数存储在变量中,但它也感觉像在不写入 return 的情况下执行显式返回:
def foo(fnords: Seq[Fnord]): Poit => Boolean {
val filterFunction = (poit: Poit) => {
fnords.contains(poit.fnord)
}
filterFunction
}
有没有另一种方法可以提供在 scala 中返回可调用对象的反馈?
你可以
把它写成函数
def foo(fnords: Seq[Fnord]): Poit => Boolean =
(poit: Poit) => fnords.contains(poit.fnord)
或者只是
def foo(fnords: Seq[Fnord]): Poit => Boolean =
poit => fnords.contains(poit.fnord)
或作为方法
def foo(fnords: Seq[Fnord])(poit: Poit): Boolean =
fnords.contains(poit.fnord)
并使用它
val f: Poit => Boolean = foo(Seq(fnord))
f(poit)
符合我的口味
def foo(fnords: Seq[Fnord]): Poit => Boolean = {
val filterFunction = (poit: Poit) => fnords.contains(poit.fnord)
filterFunction
}
没关系。