當我第一次遇到以下代碼時,我很困惑。在scala中,使用函數名稱作爲返回值?
在類Element中,有三個函數定義。
爲什麼高度和寬度可以直接使用內容作爲Array [String]的變量?
是因爲Scala中的每個函數都是一個對象或其他規則?
我來自C++的世界,所以定義真的讓我感到困惑。
abstract class Element {
def contents: Array[String]
def height: Int = contents.length
def width: Int = if (height == 0) 0 else contents(0).length
}
我沒有注意到這個問題的第一次閱讀,但值得指出的是,在'Element'類中實際存在* no函數*。有三種*方法*。 (內容)方法的(幾乎)等效的*函數*將被聲明爲'val contents:()=> Array [String]'。請參閱[在Scala中的方法和函數之間的區別](http://stackoverflow.com/questions/2529184/difference-between-method-and-function-in-scala)和從該問題鏈接的博客帖子,瞭解爲什麼這個區別事項。 –