我想學習scala並理解函數和方法之間的區別。如何從scala中的匿名函數中獲取值?
這是非常簡單的代碼,我寫 -
scala> class C (acc:Int) {
| val minc = (acc + 1)
| val func = {() => acc += 3 }
| }
scala> val c1 = new C(3)
c1: C = [email protected]
scala> c1.minc
res2: Int = 4
scala> c1.func
res3:() => Int = <function0>
我理解的實例化對象C1調用函數func的該結果被存儲爲另一種表達RES3。
但是我想獲取價值的匿名函數()= ACC +3即C級
內。如果我試圖通過參數RES3表達斯卡拉拋出一個錯誤
scala> res3(4)
<console>:11: error: too many arguments for method apply:()Int in trait Function0
res3(4)
^
如何從中獲得價值?
PS - 我剛剛開始使用scala,不知道這是否完全可能?
謝謝你的解釋!但是,當我嘗試從功能中獲得價值時,我仍然看到錯誤。 類別c(ACC:智力){ VAL MINC =(ACC + 1) VAL FUNC =()=> ACC + 3 } VAL C1 =新C(5) c1.minc打印6 但是,c1.func打印res23:()=> Int = 我期待輸出8出這個對象。有沒有其他方法可以用來從func中獲取價值? –
GoldenPlatinum