【问题标题】:What is wrong with def f=x:Int->List(x-1,x,x+1) in Scala?Scala 中的 def f=x:Int->List(x-1,x,x+1) 有什么问题?
【发布时间】: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 syntax


    【解决方案1】:

    有两个直接的问题:

    1. -&gt; 应该是 =&gt;
    2. 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)
    

    【讨论】:

      【解决方案2】:

      这在语法上不正确:我认为您想要的是:

      def f(x: Int):List[Int] = List(x-1,x,x+1)
      

      首先,一个函数类型是用=&gt;定义的,而不是-&gt;,也许你来自haskell,例如,一个带有Int参数并返回List[Int]的函数将具有类型Int =&gt; List[Int]

      【讨论】:

        猜你喜欢
        • 2014-04-16
        • 2010-10-18
        • 1970-01-01
        • 2019-08-02
        • 2011-03-28
        • 2016-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多