【发布时间】:2013-06-11 13:34:30
【问题描述】:
是否有一个 Scala 构造来构建和返回这样的列表?
def getOutput(isValidInput: Boolean): List[Output] =
if (isValidInput) {
yield Output(1) // Pseudo-code... I know yield is not intended for this!
yield Output(2)
}
而不是...
def getOutput(isValidInput: Boolean): List[Output] =
if (isValidInput)
List(Output(1), Output(2))
else
Nil
在 C# 中,“yield”的使用允许您返回惰性求值的集合 - 在 Scala 中是否有类似的东西?
【问题讨论】:
-
如果你想要代码的懒惰或简洁,我不清楚这个问题。除非布尔值为真,否则不会在您的示例中创建列表。
-
你想要的是一种延续形式。这有点受支持,但可能比其他选项可读性差。见scala-lang.org/node/2096
标签: scala scala-2.10