2017-03-03 68 views
0

我是新來的編程和Scala。我不明白這段代碼的第二行是怎麼回事。我所能理解的是一個方法(add)是以Class(Number)作爲參數創建的。之後,我畫空白。我真的很感激,如果有人能解釋這段代碼。感謝Scala類方法

scala> class Number(val i:Int){ 
    def add(num: Number) = new Number(i + num.i) 
} 
scala> (new Number(23)).add(new Number(-1)).i 
res18: Int = 22 

回答

0

首先得到成員變量i您需要了解這裏

1幾樣東西)add是類Number的方法。因此,可以在Number類的實例(對象)上調用add方法。

那是什麼這裏發生

(new Number(23)).add(new Number(-1)).i

  ^

2)add方法需要Number對象作爲輸入參數。所以,你可以Number實例添加到add方法

(new Number(23)).add(new Number(-1)).i

   ^

3)add方法方法返回Number類型和數量類包含i作爲公共VAL(變量)。所以,你可以做numberInstance.i得到的數類

那是什麼在這裏

(new Number(23)).add(new Number(-1)).i

       ^

發生所以,最後

23 - 1是結果的整數的值。

add方法需要在其上調用的實例的i值並將其添加到實例的i值被給定爲輸入參數,以它和從結果創建許多實例(包裝用數數類)。這就是發生的事情。

+0

這部分是幹什麼的? =新號碼(我+ num.i) –

+0

@GauravSharma,你的意思是'this'部分? – pamu

+0

= new Number(i + num.i) –

0

創建的Number實例((new Number(23)))。它可以立即使用,因此下一步就是調用add()方法,該方法返回Number。 然後我們從Number實例

0

之後=是該方法的主體。對於只有一個語句的方法,不需要大括號。返回類型也可以省略,因爲編譯器可以確定返回類型應該是什麼(在這種情況下爲Number)。