我有時會看到類似下面的東西。Scala中class參數的val是什麼?
class Test(val str: String){
}
我寫了一些示例代碼val
不過,我看不出有共同宣言,並與val
的方式有什麼區別。
他們有什麼區別? 什麼時候應該使用它?
我有時會看到類似下面的東西。Scala中class參數的val是什麼?
class Test(val str: String){
}
我寫了一些示例代碼val
不過,我看不出有共同宣言,並與val
的方式有什麼區別。
他們有什麼區別? 什麼時候應該使用它?
如果添加val
,您的變量將在課堂外可見。
// 'name' is a val
class Person(val name: String)
val p = new Person("Alvin Alexander")
p.name // String = Alvin Alexander
p.name = "Fred Flintstone" // error: reassignment to val
// 'name' is neither var or val
class Person(name: String)
val p = new Person("Alvin Alexander")
p.name // error: value name is not a member of Person
的代碼http://alvinalexander.com/scala/scala-class-examples-constructors-case-classes-parameters
被帶到通過增加@ EntryLevelDev的回答,您可以使用javap
,看看到底發生了什麼。
1.scala
class Test(val str: String){
}
第一步。 scalac 1.scala
step2。 javap的測試
從 「1.scala」
public class Test {
public java.lang.String str();
public Test(java.lang.String);
}
2.scala編譯:
class Test2(str: String){
}
第一步。 scalac 2.scala
step2。 javap的Test2的
從「1.scala」
public class Test1 {
public Test1(java.lang.String);
}
編譯所以,當你添加VAL,斯卡拉生成由參數的名稱的方法,並公之於衆,以便從外部可見。