Loops

ในภาษา ruby มี loop ให้ใช้สองแบบครับ

แบบแรกคือ loop มาตฐาน while และ for

i = 0
while i < 4
  puts("i = #{i}")
  i = i + 1
end

เมื่อเป็น “จริง” ถึงทำ ผลลัพธ์ที่ได้คือ

i = 0
i = 1
i = 2
i = 3

สำหรับ 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

ผลลัพธ์ที่ได้คือ

first
second
third

การใช้ 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

george
mike
Break!

ตัวอย่าง next

name = ['george', 'mike', 'gary', 'diana']
 
name.each do |name|
  if name = 'gary'
    puts('Next!')
    next
  end
  puts(name)
end

ผลที่ได้จะข้าม gary ไป

george
mike
Next!
diana