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