หน้าเว็บ

วันพฤหัสบดีที่ 6 สิงหาคม พ.ศ. 2552

ความเข้าใจพื้นฐานก่อนเริ่มเขียน Ruby ตอนที่ 2

6) Garbage Collector ใน Ruby
ตัวแปลภาษา Ruby มีฟังก์ชั่นที่เรียกว่า Garbage Collector ซึ่งทำหน้าที่บริหารจัดการหน่วยความจำโดยอัตโนมัติ เพื่อให้โปรแกรมสามารถใช้พื้นที่ในหน่วยความจำได้อย่างมีประสิทธิภาพมากที่สุด ซึ่ง Garbage Collector นั้นก็เป็นฟังก์ชั่นที่ใช้ในภาษา Java และ C# เช่นกัน

7) ไม่ต้องมีตัวจบบรรทัด
เนื่องจากภาษา Ruby แปลโค้ดแบบ interpreter แปลไปทีละบรรทัด เราเลยไม่ต้องใส่ตัวจบบรรทัดให้มัน ภาษา Ruby จะแยกแยะโค้ดแต่ละบรรทัดได้เองจากการขึ้นบรรทัดใหม่
อย่างไรก็ภาษา Ruby ก็ยังอนุญาตให้ใช้เครื่องหมาย ";"(comma) แทนการขึ้นบรรทัดใหม่ได้ในกรณีที่เราต้องการเขียนโค้ดหลายๆชุดไว้ในบรรทัดเดียว ดังตัวอย่างต่อไปนี้ครับ


a=10; b=15; sum=a+b; puts sum;


ซึ่งจะมีความหมายเดียวกับการที่เราเขียนแยกบรรทัด ดังตัวอย่างด้านล่างนี้ โดยการรันซอร์ซโค้ดทั้งสองแบบจะได้ผลลัพธ์เหมือนกันคือการพิมพ์ค่าของ sum ออกมาทางหน้าจอ

1
2
3
4
a = 10
b = 15
sum = a + b
puts sum


8) พิมพ์ข้อความออกมาทางหน้าจอ
เรามีวิธีสั่งให้ Ruby พิมพ์ข้อความออกมาทางหน้าจออยู่ 3 วิธีด้วยกันคือ

วิธีผลลัพธ์
ใช้คำสั่ง putsพิมพ์ข้อความออกทางหน้าจอพร้อมกับขึ้นบรรทัดใหม่ให้ด้วย
ใช้คำสั่ง printพิมพ์ข้อความออกทางหน้าจออย่างเดียวโดยไม่ขึ้นบรรทัดใหม่ให้
ใช้คำสั่ง printfพิมพ์ข้อความออกทางหน้าจออย่างเดียวโดยไม่ขึ้นบรรทัดใหม่ให้ และสามารถกำหนดลักษณะของการแสดงผลข้อความได้ด้วย


โค้ดต่อไปนี้จะเป็นตัวอย่างการพิมพ์ข้อความออกทางหน้าจอของทั้งสามรูปแบบครับ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# พิมพ์ข้อความพร้อมกับขึ้นบรรทัดใหม่ด้วย puts
puts "Arsenal"
 
# พิมพ์ข้อความอย่างเดียวไม่ต้องขึ้นบรรทัดใหม่ด้วย print
print "Manchester United"
 
# แต่ถ้าอยากขึ้นบรรทัดใหม่ด้วย print ก็ใส่สตริง "\n" ที่แทนการขึ้นบรรทัดใหม่เข้าไป
print "Chelsea\n"
 
# แสดงค่าของตัวแปรร่วมกับสตริงด้วย printf
frustrated = "Liverpool"
printf "%s : This is Anfield", frustrated
 
# ถ้าจะแสดงค่าของตัวแปรร่วมกับสตริงด้วย puts ก็ใส่ตัวแปรลงไปในเครื่องหมาย "#{ }"
puts "#{frustrated} : This is Anfield"


ซึ่งจะได้ผลลัพธ์ดังนี้
Arsenal
Manchester UnitedChelsea
Liverpool : This is AnfieldLiverpool : This is Anfield

หมายเหตุ: จริงๆแล้ว puts, print และ printf ไม่ใช้ "คำสั่ง" ครับแต่พวกมันเป็นเมธอด !? ซึ่งเมธอดที่เรียกใช้ได้โดยที่เราไม่ต้องสร้างอ็อบเจกต์ขึ้นมาเหล่าจะสังกัดอยู่ในคลาส NilClass ครับ ดังนั้นหากเราจะเรียกมันว่า "คำสั่ง" ก็คงไม่ผิดในแง่ของการนำมาใช้งานนัก

9) Parallel Assignment
ภาษา Ruby สามารถกำหนดค่าให้กับตัวแปรในแบบที่เรียกว่า parallel asignment ได้ครับ คือใช้เครื่องหมายเท่ากับแค่อันเดียวในการกำหนดค่าให้ตัวแปรหลายๆตัว ซึ่งการกำหนดค่าแบบนี้จะพบเห็นได้บ่อย ในภาษา Ruby ครับ

ลองมาดูกันสักหน่อยว่า parrelle asignment นั้นหน้าตาเป็นยังไง
สมมติว่าเราอยากจะกำหนดค่าให้กับตัวแปร 4 ตัว ตามปกติแล้วเราอาจจะทำได้ด้วยการเขียนโค้ด 4 บรรทัดแบบนี้

1
2
3
4
model = "Jazz",
mfg = "Honda"
color = "White"
cost = 640000


แต่ถ้ากำหมดค่าแบบ parallel asignment เราจะใช้แค่บรรทัดเดียว ซึ่งตะได้ผลลัพธ์เหมือนกับโค้ดด้านบน


model, mfg, color, cost = "Jazz", "Honda", "White", 640000


อย่างไรก็ตาม ไม่ได้หมายความว่าเราจำเป็นต้องใช้ parallel asignment ทุกครั้งไปนะครับ ทั้งนี้ขึ้นอยู่กับความเหมาะสมและความชอบของแต่ละคนครับ

1 ความคิดเห็น: