Ruby มีการควบคุมการไหลมาตรฐาน (if, , ) แต่มีคุณสมบัติที่เป็นเอกลักษณ์และสื่อความหมายได้ดี ได้แก่ (), , อันทรงพลัง และความนิยมในการใช้ มากกว่าลูปแบบดั้งเดิม การควบคุมการไหลใน Ruby อ่านได้อย่างเป็นธรรมชาติ
casewhiledo_x if conditionunlesscase/whenif age >= 18
puts "adult"
elsif age >= 13
puts "teen"
else
puts "child"
end
# MODIFIER form — condition at the END (reads like English, idiomatic for short cases)
puts "adult" if age >= 18
puts "minor" unless age >= 18 # `unless` = if not (more readable than `if !`)
# everything is an expression — if returns a value
grade = if score >= 90 then "A" else "B" end
รูปแบบ modifier ของ Ruby (puts "x" if condition) วางเงื่อนไขไว้ท้ายเพื่อให้ได้ one-liner ที่กระชับและอ่านง่าย unless (= "if not") อ่านได้เป็นธรรมชาติกว่าการใช้นิเสธ และ if เป็น expression ที่คืนค่า
case status
when :active then "running"
when :stopped, :paused then "halted" # multiple values
when 1..10 then "small number" # ranges
when String then "it's a string" # types (uses ===)
else "unknown"
end
# case can also do structural pattern matching (Ruby 3)
case data
in { name: String => name, age: Integer } # pattern matching with destructuring
puts name
end
case/when ของ Ruby ทรงพลัง มันจับคู่ค่า ช่วง (range) ชนิด และ (ใน Ruby 3) รูปแบบเชิงโครงสร้าง โดยใช้ === เบื้องหลัง ยืดหยุ่นกว่า switch พื้นฐานมาก
while count < 10 do count += 1 end
until done do ... end # until = while not
# ✅ but Ruby PREFERS iteration with blocks over explicit loops:
5.times { |i| puts i } # instead of a for loop
[1, 2, 3].each { |n| puts n } # iterate a collection
(1..10).each { |n| ... } # iterate a range
1.upto(5) { |i| ... }
Ruby มี while/until แต่ Ruby ที่เป็นธรรมชาติ นิยมการวนซ้ำด้วยบล็อก (each, times, map) มากกว่าลูปแบบชัดเจน ซึ่งสื่อความหมายได้ดีกว่าและเป็นสไตล์ Ruby มากกว่า
การเข้าใจการควบคุมการไหลของ Ruby เป็นความรู้พื้นฐานในชีวิตประจำวัน และคุณสมบัติที่เป็นเอกลักษณ์หลายอย่างสะท้อนปรัชญาของ Ruby ที่สื่อความหมายได้ดีและอ่านง่าย
รูปแบบ modifier (do_x if condition) และ unless (= "if not") ช่วยให้คุณเขียนเงื่อนไขที่กระชับ คล้ายภาษาอังกฤษ ซึ่งเป็น Ruby ที่เป็นธรรมชาติและปรากฏตลอดเวลา
ความจริงที่ว่า if เป็น expression (ที่คืนค่า) ช่วยให้กำหนดค่าได้อย่างสง่างาม
case/when ของ Ruby ทรงพลังเป็นที่น่าสังเกต มันจับคู่ค่า ช่วง ชนิด และ (ใน Ruby 3) รูปแบบเชิงโครงสร้างผ่าน === ทำให้ยืดหยุ่นกว่า switch พื้นฐานมากและมีประโยชน์สำหรับการแยกสาขาแบบหลายทางที่สะอาด
ที่สำคัญคือ Ruby ที่เป็นธรรมชาติ นิยมการวนซ้ำด้วยบล็อก (each, times, map, upto) มากกว่าลูป for/while แบบดั้งเดิม นี่เป็นจุดเชิงสไตล์ที่นิยามตัวตน: นักพัฒนา Ruby วนซ้ำคอลเลกชันและช่วงด้วยเมธอดแบบบล็อกแทนลูปแบบชัดเจน ซึ่งสื่อความหมายได้ดีกว่าและเป็นสไตล์ Ruby มากกว่า
การเข้าใจโครงสร้างและสำนวนเหล่านี้ ทั้งรูปแบบ modifier และ unless สำหรับเงื่อนไขที่อ่านง่าย, case/when อันทรงพลัง และโดยเฉพาะ ความนิยมในการวนซ้ำแบบบล็อกมากกว่าลูปแบบชัดเจน เป็นสิ่งสำคัญต่อการเขียนและอ่าน Ruby ที่เป็นธรรมชาติ
เนื่องจากการควบคุมการไหลปรากฏในทุกโปรแกรม และเนื่องจากรูปแบบที่สื่อความหมายได้ดีของRuby (modifier, unless, case อันทรงพลัง, การวนซ้ำแบบบล็อก) สะท้อนปรัชญาที่มุ่งเน้นการอ่านง่าย การเชี่ยวชาญมันจึงเป็นความรู้พื้นฐานที่จำเป็นต่อการเขียน Ruby ที่เป็นธรรมชาติแทนที่จะแปลรูปแบบที่เต็มไปด้วยลูปจากภาษาอื่น