Scala 这种类型的比赛怎么办?

Scala 这种类型的比赛怎么办?,scala,Scala,您好,我是Scala的新手,正在尝试运行以下代码: class Number(x : Int){ var number = x def inc(): Int = { number => number + 1 } } 但是我得到了以下错误:solution.scala:12:error:缺少参数类型 数字=>数字+1 我不知道如何解决这个问题。基本上,你可以明确地说出你想要的类型: def inc(): Int

您好,我是Scala的新手,正在尝试运行以下代码:

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

        def inc(): Int = {
            number => number + 1
        }
  }
但是我得到了以下错误:solution.scala:12:error:缺少参数类型 数字=>数字+1
我不知道如何解决这个问题。

基本上,你可以明确地说出你想要的类型:

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 = (x: Int) => x + 1
由于Int返回类型是推断的,因此无需指定它


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

我认为应该是
def inc()={number=number+1;number}
,应该是一个可变性类型(ick!)。注意,您可以跳过一个中间
x
类号(var number:Int){
def inc = (x: Int) => x + 1