คุณจะบอกโปรแกรม Ruby ให้รอเวลาตามอำเภอใจก่อนที่จะไปยังบรรทัดถัดไปของรหัสได้อย่างไร
คุณจะบอกโปรแกรม Ruby ให้รอเวลาตามอำเภอใจก่อนที่จะไปยังบรรทัดถัดไปของรหัสได้อย่างไร
คำตอบ:
แบบนี้:
sleep(num_secs)
num_secs
ค่าสามารถเป็นจำนวนเต็มหรือลอย
นอกจากนี้หากคุณกำลังเขียนสิ่งนี้ภายในแอพ Rails หรือรวมไลบรารี ActiveSupport ไว้ในโครงการของคุณคุณสามารถสร้างช่วงเวลาที่ยาวนานขึ้นโดยใช้ไวยากรณ์ความสะดวกสบายต่อไปนี้:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
ใช้การนอนหลับอย่างเช่น:
sleep 2
นั่นจะนอนประมาณ 2 วินาที
ระมัดระวังในการโต้แย้ง หากคุณเพิ่งทำงานsleep
กระบวนการจะนอนหลับตลอดไป (สิ่งนี้มีประโยชน์เมื่อคุณต้องการให้เธรดนอนหลับจนกว่าจะถูกปลุก)
ฉันพบว่าuntil
มีประโยชน์มากกับการนอนหลับ ตัวอย่าง:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
สามารถใช้ในการนอนหลับจนกว่าจะบรรลุเงื่อนไขใด ๆ (เช่นความรักที่ไวยากรณ์รู้สึกเป็นธรรมชาติ)
sleep 6
จะนอนเป็นเวลา 6 วินาที สำหรับระยะเวลานานนอกจากนี้คุณยังสามารถใช้หรือsleep(6.minutes)
sleep(6.hours)
minutes()
และhours()
เป็นวิธีการเกี่ยวกับตัวเลขที่เพิ่มขึ้นโดย Ruby on Rails ดังนั้นจึงไม่มีมาตรฐานใน Ruby - ใน ActiveSupport :: Duration พวกเขาค่อนข้างสะดวก
การใช้งานของวินาที / นาที / ชั่วโมงซึ่งเป็นวิธีการทางรถไฟ โปรดทราบว่าไม่จำเป็นต้องส่งคืนสินค้าโดยนัย แต่พวกเขาดูสะอาดกว่าดังนั้นฉันจึงชอบ ฉันไม่แน่ใจว่า Rails มี. วันหรือถ้ามันไปไกลกว่านี้ แต่สิ่งเหล่านี้คือสิ่งที่ฉันต้องการ
class Integer
def seconds
return self
end
def minutes
return self * 60
end
def hours
return self * 3600
end
def days
return self * 86400
end
end
หลังจากนี้คุณสามารถทำได้:
sleep 5.seconds
เข้าสู่โหมดสลีปเป็นเวลา 5 วินาที คุณสามารถsleep 5.minutes
นอน 5 นาที คุณสามารถsleep 5.hours
นอนหลับได้ 5 ชั่วโมง และในที่สุดคุณสามารถsleep 5.days
เข้าสู่โหมดสลีปเป็นเวลา 5 วัน ... คุณสามารถเพิ่มวิธีการใด ๆ ที่คืนค่าตัวเอง * (จำนวนวินาทีในช่วงเวลานั้น) ลองออกกำลังกายเป็นเวลาหลายเดือน!