这种类型如何不匹配?

时间:2012-04-03 23:30:39

标签: scala

我是Scala的新手尝试运行此代码:

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

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

但是我收到以下错误:solution.scala:12:错误:缺少参数类型     number =>数字+ 1 我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分: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
}

会更接近,
BUT
它没有意义和注意,你定义的数字与类中的number变量没有任何共同之处   - 这就是Scala编译器无法为您推断类型的原因。

我想你想写一些类似的东西:

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

    def inc(num: Int): Int = num + 1

答案 1 :(得分:0)

或简单地说:

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

因为推断了Int返回类型,所以不需要指定它

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