2011年5月2日 星期一

3-11. 驗證 assignment 與 method 的 result 值

之前提到,每個 statement 都有 result 值,既是如此,我們可以將任何一個 statement 指定給一個變數,或是印出該 statement 的 result 值。

以下的命令在 Scala 是合法的
var v = println("a")  // 將 println 的 return 值,指定給 v。v 此時的值是 println("a") 的 return 值,應該是 unit value
println(v = 10) // 將 v = 10 的 result 值,丟給 println 印出。傳進 println 的值為,assignment 後的值,所以應該是 Unit

第二個 statement,有一些小問題,各位應該有以下的疑問
「由 statement1, 可以推論出 v 的型態應該是 Unit,那 statement2, v = 10,將 10 設定給 Unit type 的變數 v,這是可以嗎?」

答案是,變數的型態為 Unit 時,可以接受 assignment,但值不會改變(可設定,但值沒改)。

我們看執行範例
第三個 statement 直接設定 v 的值為 100,但 v 仍是 unit value,沒有改變。

沒有留言:

張貼留言