【发布时间】:2019-09-18 07:40:47
【问题描述】:
您好,我不太明白为什么 Scala 中的这个定义不起作用。
scala> def f=x:Int->List(x-1,x,x+1)
<console>:1: error: ';' expected but '(' found.
def f=x:Int->List(x-1,x,x+1)
^
【问题讨论】:
您好,我不太明白为什么 Scala 中的这个定义不起作用。
scala> def f=x:Int->List(x-1,x,x+1)
<console>:1: error: ';' expected but '(' found.
def f=x:Int->List(x-1,x,x+1)
^
【问题讨论】:
有两个直接的问题:
-> 应该是 =>
x:Int 应该是 (x:Int)
所以这行得通:
def f = (x: Int) => List(x - 1, x, x + 1)
但是,这是定义一个返回函数的函数,这可能不是预期的。所以改为尝试
val f = (x: Int) => List(x - 1, x, x + 1)
或
def f(x: Int) = List(x - 1, x, x + 1)
【讨论】:
这在语法上不正确:我认为您想要的是:
def f(x: Int):List[Int] = List(x-1,x,x+1)
首先,一个函数类型是用=>定义的,而不是->,也许你来自haskell,例如,一个带有Int参数并返回List[Int]的函数将具有类型Int => List[Int]
【讨论】: