ค่าความจริงใน Ruby
nil และ false
ค่าความจริงใน Ruby เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
ความเป็นจริงคืออะไร
ในเงื่อนไข Ruby ไม่ได้กำหนดให้ต้องใช้ค่าบูลีนอย่างเคร่งครัด ค่าทุกค่าจะถูกจัดว่าเป็นจริงหรือเท็จ การทราบกฎนี้ช่วยป้องกันข้อผิดพลาดที่สังเกตได้ยาก
if "hello"
puts "Strings are truthy"
endมีค่าเท็จเพียงสองค่า
กฎของ Ruby เรียบง่ายอย่างน่าพอใจ: มีเพียง false และ nil ที่เป็นค่าเท็จ ค่าอื่นทั้งหมดเป็นค่าจริง
puts "nil is falsy" unless nil
puts "false is falsy" unless falseศูนย์เป็นค่าจริง
ต่างจากหลายภาษา 0 เป็นค่าจริงใน Ruby เช่นเดียวกับสตริงว่างและอาร์เรย์ว่าง โปรดระวังหากคุณเคยใช้ C หรือ Python มาก่อน
if 0
puts "0 is truthy in Ruby"
end
if ""
puts "empty string is truthy too"
endทำความรู้จัก nil
nil แทนการไม่มีค่า เมธอดมักส่งคืน nil เมื่อไม่มีสิ่งใดให้ส่งกลับ เช่น เมื่อไม่พบคีย์ในแฮช
user = { name: "Ada" }
puts user[:email].inspect # missing key returns nilการตรวจสอบ nil
ใช้ nil? เพื่อตรวจสอบโดยตรง โดยจะส่งคืน true เฉพาะเมื่อเป็น nil เท่านั้น
x = nil
y = 0
puts x.nil?
puts y.nil?ตัวดำเนินการ &&
&& จะส่งคืนตัวถูกดำเนินการตัวแรกที่เป็นค่าเท็จ หรือส่งคืนตัวถูกดำเนินการตัวสุดท้ายหากทุกตัวเป็นค่าจริง การประเมินจะหยุดลงทันที: ด้านขวาจะไม่ถูกประเมินหากด้านซ้ายเป็นค่าเท็จ
puts (nil && "never").inspect
puts ("a" && "b").inspectตัวดำเนินการ ||
|| จะส่งคืนตัวถูกดำเนินการตัวแรกที่เป็นค่าจริง จึงเหมาะอย่างยิ่งสำหรับค่าปริยาย
name = nil
display = name || "Guest"
puts displayการกำหนดค่าแบบมีเงื่อนไข ||=
a ||= b จะกำหนดค่า b ให้ a ก็ต่อเมื่อขณะนั้น a เป็น nil หรือ false เท่านั้น นี่คือวิธีกำหนดค่าปริยายตามสำนวนของ Ruby
config = {}
config[:timeout] ||= 30
config[:timeout] ||= 99 # already set, ignored
puts config[:timeout]ระวังค่าเริ่มต้นที่เป็นเท็จ
เนื่องจาก false เป็นค่าเท็จ || จึงอาจเขียนทับค่า false ที่ถูกต้องตามความหมายได้ เมื่อ false มีความหมายสำคัญ ให้ตรวจสอบด้วย nil? แทน
enabled = false
result = enabled || true # oops, becomes true
puts result
safe = enabled.nil? ? true : enabled
puts safeตัวดำเนินการนำทางอย่างปลอดภัย
&. จะเรียกใช้เมธอดก็ต่อเมื่อออบเจ็กต์ตัวรับไม่ใช่ nil มิฉะนั้นจะส่งคืน nil แทนการทำให้เกิดข้อผิดพลาด
name = nil
puts name&.upcase.inspect # no NoMethodError
name = "ruby"
puts name&.upcaseนำทุกอย่างมาประกอบกัน
กฎเรื่องค่าความเป็นจริงช่วยให้คุณเขียนโค้ดที่สื่อความหมายและกระชับได้ แต่โปรดคำนึงถึงกรณีพิเศษด้วย:
- มีเพียง
nilและfalseที่เป็นค่าเท็จ 0,""และ[]ล้วนเป็นค่าจริง- ใช้
nil?เมื่อค่าfalseจริง ๆ มีความสำคัญ
values = [0, "", [], nil, false]
values.each do |v|
puts "#{v.inspect} => #{v ? "truthy" : "falsy"}"
endตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจเรื่องค่าความเป็นจริงใน Ruby
สรุปทบทวน
คุณได้เรียนรู้เรื่องค่าความเป็นจริงใน Ruby:
- มีเพียง
nilและfalseที่เป็นค่าเท็จ nil?ใช้ตรวจสอบ nil โดยตรง&&และ||ส่งคืนตัวถูกดำเนินการและหยุดการประเมินเมื่อรู้ผลแล้ว||=ใช้กำหนดค่าปริยาย ส่วน&.ช่วยป้องกันการเรียกใช้เมธอดกับตัวรับที่เป็น nil
username = nil
username ||= "anonymous"
puts "Welcome, #{username}"คำถามที่พบบ่อย
บทเรียน “ค่าความจริงใน Ruby” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่าความจริงใน Ruby” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่าความจริงใน Ruby”
nil และ false คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ค่าความจริงใน Ruby” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- if, unless, ternary
- นิพจน์ case/when
- ค่าความจริงใน Ruby
- ประโยคเงื่อนไขป้องกัน