Scala/物件
外觀
< Scala
在 Scala 中,物件是一個帶有名稱的例項,具有欄位和方法等成員。物件和類具有相同的名稱並在同一個原始檔中定義,被稱為伴生物件。伴生物件具有特殊的訪問控制屬性,這在Scala/訪問修飾符中介紹。
一個簡單的物件示例
object SimpleObject
val a = SimpleObject
在第一行中,關鍵字“object”用於定義一個新物件,後面跟著物件的名稱,這裡為“SimpleObject”。在第二行中,一個名為“a”的值被賦值為名為“SimpleObject”的物件例項。
物件的成員類似於類的成員。有關更多資訊,請參見Scala/類#成員。物件中成員的示例
object MembersObject {
val someValue = "test"
def someMethod(a:Int) = a*a
}
println("someValue is: " + MembersObject.someValue) //Prints "someValue is: test".
println("someMethod(3) gives: " + MembersObject.someMethod(3)) //Prints "someMethod(3) gives: 9".
物件還支援特殊的“apply”方法,有關更多資訊,請參見Scala/類#Apply。
物件的一種用途是包含獨立於任何環境的欄位和方法。一個例子是“math”,它是標準庫中的一個物件,它包含幾個僅依賴於傳遞給它們的任何引數(如果有)的欄位和方法。
println("Value of pi: " + math.Pi) //Prints "Value of pi: 3.141592653589793"
println("Square root of 4: " + math.sqrt(4)) //Prints "Square root of 4: 2.0"
println("Square root of 5: " + math.sqrt(5)) //Prints "Square root of 5: 2.23606797749979"
物件的另一個用途是建立類的例項
class Rectangle(val a:Int, val b:Int)
object Rectangle {
def createValidRectangle(a:Int, b:Int) = new Rectangle(math.max(a, 1), math.max(b, 1))
}
val validRectangle = Rectangle.createValidRectangle(3, -10000)
println("Valid rectangle: " + validRectangle.a + ", " + validRectangle.b) //Prints "Valid rectangle: 3, 1".
在上面,仍然可以透過直接使用“Rectangle”類的建構函式來建立無效的矩形。Scala/可見性描述瞭如何限制對建構函式的訪問,這與物件結合使用,使得更容易確保和驗證只建立某些給定類的有效類例項。
物件的第三個用途是建立 Scala 程式的入口點。這是透過定義一個具有特定簽名的“main”方法來完成的
object ProgramEntryPoint {
def main(args:Array[String]) = {
println("Program execution start.")
println("Program execution end.")
}
}
行“def main(args:Array[String])”指示了入口點有效的必需簽名。有關更多資訊,請參見Scala/設定#編譯 Scala。