嗨,我是 Scala 的新手,正在尝试运行此代码:
class Number(x : Int){
var number = x
def inc(): Int = {
number => number + 1
}
}
但我收到以下错误:solution.scala:12: error: missing parameter type number => number + 1 我不知道如何解决这个问题。
嗨,我是 Scala 的新手,正在尝试运行此代码:
class Number(x : Int){
var number = x
def inc(): Int = {
number => number + 1
}
}
但我收到以下错误:solution.scala:12: error: missing parameter type number => number + 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(num: Int): Int = num + 1
或者简单地说:
def inc = (x: Int) => x + 1
由于 Int 返回类型是推断出来的,所以不需要指定它
至于处理问题中的可变性,inc(1)、inc(5) 等本身就是传递给类实例的数字的转换表示(即它们等同于“var number”,但不可变)。根据我们在这里看到的,没有真正需要可变性......