ในภาษา ruby มี loop ให้ใช้สองแบบครับ
แบบแรกคือ loop มาตฐาน while และ for
i = 0
while i < 4
puts("i = #{i}")
i = i + 1
end
เมื่อเป็น “จริง” ถึงทำ ผลลัพธ์ที่ได้คือ
สำหรับ while เราสามารถเปลียนคำว่า while เป็นคำว่า until ได้ในกรณีที่ต้องการให้เป็น “เท็จ” ถึงทำ
i = 0
until i >= 4
puts("i = #{i}")
i = i + 1
end
ผลลัพธ์ที่ได้เหมือนกันครับ
สำหรับ loop for เราไม่ค่อยได้ใช้เท่าไหร จะข้ามไปครับ :p
แบบที่สองคือการ loop โดยดึงค่ามาจาก Array โดยใช้คำสั่ง each
array = ['first', 'second', 'third']
array.each do |x|
puts(x)
end
ผลลัพธ์ที่ได้คือ
การใช้ each จะคล้ายกับการใช้ iterator ใน java
ArrayList list = new ArrayList();
list.add("first");
list.add("second");
list.add("third");
for( Iterator i = list.iterator(); i.hasNext();) {
System.out.println(i.next());
}
สำหรับคนที่อยากได้ for i = 1 to 10 { } ใน ruby เราใช้
(1..10).each do |i|
puts i
end
คำสั่งมาตรฐานสำหรับ Loop อย่าง break และ next
ตัวอย่าง break
name = ['george', 'mike', 'gary', 'diana']
name.each do |name|
if name == 'gary'
puts('Break!')
break
end
puts(name)
end
ผลที่ได้จะหยุด loop ที่ gary
ตัวอย่าง next
name = ['george', 'mike', 'gary', 'diana']
name.each do |name|
if name = 'gary'
puts('Next!')
next
end
puts(name)
end
ผลที่ได้จะข้าม gary ไป
อ่านเพิ่มเติมได้ที่ rubybox.net