0

嗨,我是 Scala 的新手,正在尝试运行此代码:

 class Number(x : Int){
        var number = x

        def inc(): Int = {
            number => number + 1
        }
  }

但我收到以下错误:solution.scala:12: error: missing parameter type number => number + 1 我不知道如何解决这个问题。

4

2 回答 2

2

本质上,您可以明确地说出您期望的类型:

def inc(): Int = {
            number: Int => number + 1
}

但是这不会编译,因为你定义的是函数,所以:

def inc(): (Int) => Int = {
  // some function that takes Int, calls it `number` and increment   
  number: Int => number + 1
}

会更接近,

它没有意义和注意,你定义的数字与number类内的变量没有任何共同点——这就是为什么 Scala 编译器不能为你推断类型。

我想你想写这样的东西:

    def inc(): Int = {number += 1; number;}
    // will take effect on number field

或者

    def inc(num: Int): Int = num + 1
于 2012-04-03T23:33:49.227 回答
0

或者简单地说:

def inc = (x: Int) => x + 1

由于 Int 返回类型是推断出来的,所以不需要指定它

至于处理问题中的可变性,inc(1)、inc(5) 等本身就是传递给类实例的数字的转换表示(即它们等同于“var number”,但不可变)。根据我们在这里看到的,没有真正需要可变性......

于 2012-04-04T08:45:02.760 回答