我是Scala的新手尝试运行此代码:
class Number(x : Int){
var number = x
def inc(): Int = {
number => number + 1
}
}
但是我收到以下错误:solution.scala:12:错误:缺少参数类型 number =>数字+ 1 我不知道如何解决这个问题。
答案 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”,但不可变等) 。根据我们在这里看到的内容,确实不需要可变性......