var {name} : {data type} = {initial value}
var x : Int = 0
var y : String = "John"
var z : Double = 1.0
var p : Boolean = true
การประกาศตัวแปรเราจะต้องกำหนดค่าเริ่มต้นให้เสมอ ถ้าเราไม่ได้กำหนดค่าเริ่มต้นจะพบกับ compile error ดังนี้
"local variables must be initialized"
อย่างที่ได้กล่าวไว้ในบทความก่อนหน้านี้ว่า Scala เป็นภาษาที่ยืดหยุ่นมาก ดังนั้น ในบางครั้งการประกาศตัวแปร เพื่อความสะดวกเราไม่จำเป็นต้อง ประกาศชนิดข้อมูล (data type) ก้อได้ เช่น
x = 0
y = "John"
z = 1.0
compiler รู้ว่า x เป็นตัวแปรชนิด interger, y เป็นตัวแปรชนิด string และ z เป็นตัวแปรชนิด double โดยอัตโนมัติ ทีนี้ถ้าหากว่าเราไป เปลี่ยนชนิดของตัวแปร x ให้เป็น double
x = 1.0
compiler จะฟ้องทันทีว่า
"type mismatched; found: Double(1.0) required: Int
เนื่องจากในตอนแรกเราประกาศให้ x เป็นตัวแปรชนิด integer เราไม่สามารถเปลี่ยนชนิดข้อมูลให้เป็น double หรืออย่างอื่นได้ในตอนหลัง อย่างไรก้อตาม เราสามารถเปลี่ยนค่า x ได้ ตราบเท่าที่มันยังเป็น integer อยู่
x = 1 //ok
สำหรับการใช้ parameter ก้อคล้ายๆ กับการประกาศตัวแปร เพียงแต่ไม่ต้องกำหนดค่าเริ่มต้นให้
def sum(a:Int, b:Int) : Int = {
return a + b
}
เราได้ประกาศเมทธอด sum ขึ้นมาโดยรับ parameter 2 ตัวคือ a และ b ทั้งคู่เป็น integer เมทธอดนี้บวกค่า a และ b แล้วคืนค่า integer กลับไป
var x = sum(1, 2)
เราประกาศตัวแปร x และกำหนดค่า เริ่มต้นโดยการเรียกใช้ เมทธอด sum ท้ายที่สุดแล้ว x จะเก็บค่า 3 นั่นเอง
ในบทความต่อไปเราจะมาดูกันต่อว่าการใช้ val จะเป็นอย่างไร แตกต่างจาก var ตรงไหนบ้าง
"type mismatched; found: Double(1.0) required: Int
เนื่องจากในตอนแรกเราประกาศให้ x เป็นตัวแปรชนิด integer เราไม่สามารถเปลี่ยนชนิดข้อมูลให้เป็น double หรืออย่างอื่นได้ในตอนหลัง อย่างไรก้อตาม เราสามารถเปลี่ยนค่า x ได้ ตราบเท่าที่มันยังเป็น integer อยู่
x = 1 //ok
สำหรับการใช้ parameter ก้อคล้ายๆ กับการประกาศตัวแปร เพียงแต่ไม่ต้องกำหนดค่าเริ่มต้นให้
def sum(a:Int, b:Int) : Int = {
return a + b
}
เราได้ประกาศเมทธอด sum ขึ้นมาโดยรับ parameter 2 ตัวคือ a และ b ทั้งคู่เป็น integer เมทธอดนี้บวกค่า a และ b แล้วคืนค่า integer กลับไป
var x = sum(1, 2)
เราประกาศตัวแปร x และกำหนดค่า เริ่มต้นโดยการเรียกใช้ เมทธอด sum ท้ายที่สุดแล้ว x จะเก็บค่า 3 นั่นเอง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น