class Point(val x: Int, val y : Int) {
var color: String = _
if (x==0)
color = "red"
else
color = "green"
def print() = {
println(s"${this.x}, ${this.y} --> ${this.color}")
}
}
object Hello {
def main(args: Array[String]) {
val p1 =new Point(1,2)
p1.print()
}
}
Scala รันโค๊ดบรรทัดต่างๆ ที่ไม่ได้ถูกประกาศไว้ในเมทธอดใดๆเลย เหมือนกับเป็น default constructor แต่อย่างไรก้อตามเพื่อให้โค๊ดอ่านได้ง่ายขึ้นเราอาจจะทำอย่างนี้ก้อได้
1: class Point(val x: Int, val y : Int) {
2: private var color: String = _
3:
4: this.init()
5:
6: private def init() {
7: if (x==0)
8: this.color = "red"
9: else
10: this.color = "green"
11: }
12:
13: def print() = {
14: println(s"${this.x}, ${this.y} --> ${this.color}")
15: }
16:}
แทนที่เราจะมีโค๊ดกระจัดกระจายไปทั่ว เรารวมเอาไว้ในเมทธอดที่ชื่อว่า init แล้วเรียกใช้แทนในบรรทัดที่ 4
อีกอย่างหนึ่งจะสังเกตุได้ว่าเราใช้ this.x, this.y และ this.color ถึงแม้ว่าจะประกาศกันคนละวิธีแต่ทั้งสามก้อเป็น instance member เหมือนกันหมด
เรื่องต่อไปเราจะมาดูเรื่อง inheritance ใน Scala กันต่อครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น