Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

หยุดโปรแกรม Ruby ก่อนเวลาอย่างสง่างามด้วยเมธอด exit

คุณหยุดโปรแกรม Ruby ก่อนเวลาอย่างไร?

ปกติโปรแกรม จะรันจนเสร็จ การประมวลผลคำสั่งทั้งหมด

หรือจนกว่าจะมีข้อยกเว้น (exception) ที่ไม่ได้รับการจัดการเกิดขึ้น

แต่ถ้าคุณกำลังเขียน โปรแกรม Ruby ที่ไม่จำเป็นต้องรันตลอดเวลา คุณอาจต้องการหยุดโปรแกรมก่อนเวลาด้วยเหตุผลบางอย่าง

คุณสามารถทำได้ด้วยเมธอด exit

เมธอด exit นี้ทำงานอย่างไร?

มาแชทกันเลย!

วิธีต่างๆ ในการหยุดโปรแกรม

เมื่อคุณเรียก exit โปรแกรมของคุณ จะไม่หยุดทันที

สิ่งที่เกิดขึ้นคือ:

Ruby ยกเลิกข้อยกเว้น SystemExit ซึ่งให้ส่วนอื่นของโปรแกรมโอกาสในการทำความสะอาด

คุณสามารถรันโค้ดนี้เพื่อดูการสาธิต:

begin
  exit
rescue SystemExit
  p 123
end

สิ่งนี้พิมพ์ 123 ก่อนออก

หากคุณต้องการให้โปรแกรมข้ามกระบวนการทำความสะอาดนี้ คุณสามารถใช้ exit! ได้

ตัวอย่าง:

begin
  exit!
rescue SystemExit
  p 123
end

สังเกตว่านี้จะ ไม่ พิมพ์ 123 ก่อนที่โปรแกรมจะจบ

คุณยังสามารถใช้เมธอดอีกตัวหนึ่งได้

มันชื่อว่า abort

ด้วยเมธอดนี้คุณสามารถระบุข้อความข้อผิดพลาดได้

เช่นนี้:

abort "No Bacon Left"

ซึ่งเทียบเท่ากับ:

warn "No Bacon Left!"
exit 1

เมธอด warn พิมพ์ข้อความข้อผิดพลาดไปที่ standard error

แต่ 1 อาร์กิวเมนต์นี้สำหรับ exit คืออะไร?

นั่นคือหัวข้อถัดไป!

การทำความเข้าใจรหัสสถานะ (Status Codes)

เมื่อโปรแกรมจบ ไม่ใช่แค่โปรแกรม Ruby แต่อะไรก็ตาม มันจะทิ้งรหัสสถานะไว้

สิ่งที่คุณต้องรู้:

  • รหัสสถานะ 0 หมายถึงโปรแกรมจบปกติ
  • รหัสสถานะอื่นๆ (ไม่ใช่ 0) ใช้ส่งสัญญาณเงื่อนไขข้อผิดพลาด
  • ผลของการคืนรหัสสถานะที่ไม่ใช่ศูนย์ ขึ้นอยู่กับสภาพแวดล้อมปัจจุบันของคุณ

สิ่งนี้ มีประโยชน์ เพราะระบบปฏิบัติการ หรือโปรแกรมทั่วไป สามารถใช้รหัสสถานะนี้ สำหรับการตรวจสอบ บันทึก log และแม้แต่การรีสตาร์ทโปรแกรมที่ล้มเหลวโดยอัตโนมัติ

ใน Linux คุณสามารถใช้ echo $? เพื่อหา exit status code ของโปรแกรมล่าสุด

กลับมาที่ Ruby:

เมื่อคุณเรียก exit รหัสสถานะคือ 0 โดยค่าเริ่มต้น

คุณสามารถส่งรหัสสถานะอื่นเป็นอาร์กิวเมนต์ได้

นั่นคือเหตุผลที่เมื่อคุณเรียก abort รหัสสถานะจะถูกตั้งเป็น 1 เมธอด abort ใช้เพื่อส่งสัญญาณข้อผิดพลาด

การหยุดลูป (Loop)

หากคุณไม่อยากหยุดโปรแกรมทั้งหมด แค่ลูป คุณต้องใช้สิ่งอื่น

คุณสามารถใช้คีย์เวิร์ด break:

while 1 == 1
  break
end

สิ่งนี้ทำงานภายในบล็อกได้เช่นกัน ไม่ใช่แค่ while loops

การออกจากเมธอด (Method)

เมธอด Ruby จบตามธรรมชาติที่บรรทัดสุดท้ายของโค้ด

หากคุณอยากออกก่อน...

ใช้คีย์เวิร์ด return

ตัวอย่าง:

def apples
  return "I had my two apples today"
  "bacon"
end

โค้ดนี้ไม่เคยถึง "bacon" เพราะ return ก่อนเวลา

โบนัส: การหยุดลูปอันลانهائية

มันเกิดขึ้น

บางครั้งคุณลืมเพิ่มตัวนับ และสร้าง ลูปอันลانهائية (infinite loop) ขึ้นมา

เพื่อหยุดโปรแกรม คุณสามารถกดชุดปุ่ม:

CTRL+C

สรุป

คุณได้เรียนรู้เกี่ยวกับเมธอด exit ใน Ruby เมธอด abort รหัสสถานะการออก และวิธี break ออกจากลูป

อย่าลืมแชร์บทความนี้เพื่อให้คนอื่นเพลิดเพลินไปกับมัน

ขอบคุณที่อ่าน! 🙂