繁体   English   中英

Scala:匿名函数返回类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM