[英]Scala: Anonymous function return type
为什么我必须这样声明返回类型:
def main(args: Array[String]): Unit = {
val n = (x: Int) => (1 to x) product: Int
println(n(5))
}
如果我删除类型,则必须在打印之前进行分配:
def main(args: Array[String]): Unit = {
val n = (x: Int) => (1 to x) product
val a = n(5)
println(n(5))
}
此变体产生错误-为什么?
val n = (x: Int) => (1 to x) product
println(n(5))
我收到以下错误(使用Scala-ide):
递归值n需要类型Test.scala / src第5行Scala问题
由于使用后缀运算符( product
),因此您看到分号推断有问题:
// Error
val n = (x: Int) => (1 to x) product
println(n(5))
// OK - explicit semicolon
val n = (x: Int) => (1 to x) product;
println(n(5))
// OK - explicit method call instead of postfix - I prefer this one
val n = (x: Int) => (1 to x).product
println(n(5))
// OK - note the newline, but I wouldn't recommend this solution!
val n = (x: Int) => (1 to x) product
println(n(5))
本质上,Scala对表达式的结尾感到困惑,因此您需要以一种或另一种方式更加明确。
根据编译器设置的不同,默认情况下可能会禁用此功能-请参见Scala的“ postfix ops”和SIP-18:模块化语言功能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.