HI我是新的斯卡拉试图运行这段代码:这种类型如何匹配?
class Number(x : Int){
var number = x
def inc(): Int = {
number => number + 1
}
}
但我得到以下错误:solution.scala:12:错误:缺少参数类型 数=>数+ 1 我不知道如何解决这个问题。
HI我是新的斯卡拉试图运行这段代码:这种类型如何匹配?
class Number(x : Int){
var number = x
def inc(): Int = {
number => number + 1
}
}
但我得到以下错误:solution.scala:12:错误:缺少参数类型 数=>数+ 1 我不知道如何解决这个问题。
或者干脆:
def inc = (x: Int) => x + 1
因为诠释返回类型推断,不需要指定它
至于处理问题中的可变性,inc(1),inc(5)等等本身就是传递给类实例的编号的变换表示(即,他们等同于“var number”,但不可改变)。没有真正需要基于我们在这里看到的可变性...
本质上讲,你可以expicitly说你期待什么类型:
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 ()= {number = number + 1;数字}',与* mutable *类型(ick!)似乎是这种情况。 – 2012-04-03 23:43:03
@pst是的,你是对的;) – 2012-04-03 23:46:34
谢谢你们真的帮助:) – 2012-04-03 23:47:46
请注意,您可以跳过一个中间''x:'class Number(var number:Int){...}' – elbowich 2012-04-04 02:31:46