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
apirak's picture

อ่านเพิ่มเติมได้ที่ rubybox.net

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น