這個聲明有什麼問題?爲什麼在給定的代碼中不允許使用public
?斯卡拉的「public」val構造函數參數
class Alpha(public val a:Int,public val b:Int)
這似乎是一個愚蠢的問題,但這是由於封裝?
這個聲明有什麼問題?爲什麼在給定的代碼中不允許使用public
?斯卡拉的「public」val構造函數參數
class Alpha(public val a:Int,public val b:Int)
這似乎是一個愚蠢的問題,但這是由於封裝?
他們是沒有public
關鍵字在斯卡拉。 Scala中的默認訪問修飾符是公共的。在你的情況下,如果你從你的構造函數簽名中刪除public
,它將公開參數。
//Public
class Alpha(val a: Int, val b: Int){}
//Private
class Alpha(private val a: Int, private val b: Int){}
這有點複雜,比較'C類(x: Int)'和'C類(val x:Int)'。只有'val's和'var's是默認公開的。前者總是定義一個私人領域。 –
準確地說,前面的'class C(x:Int)'沒有定義專用字段;它定義了一個構造函數arg,它只能被當前實例訪問。 – eques
因爲public在Scala中根本不是關鍵字。事情默認爲「公共」。 (這與Java不同!)。 – Jesper
我以爲它在那裏。因爲它在Java中。我希望它會在那裏。謝謝 – optional
Scala不是Java,只是因爲Java中存在的東西並不意味着它也存在於Scala中。我寫了一篇關於Scala訪問修飾符的博文:[scala訪問修飾符和修飾符的詳細內容](http://www.jesperdj.com/2016/01/08/scala-access-modifiers-and-qualifiers-in-detail/) – Jesper