Làm thế nào để bạn nói với một chương trình Ruby chờ một lượng thời gian tùy ý trước khi chuyển sang dòng mã tiếp theo?
Làm thế nào để bạn nói với một chương trình Ruby chờ một lượng thời gian tùy ý trước khi chuyển sang dòng mã tiếp theo?
Câu trả lời:
Như thế này:
sleep(num_secs)
Các num_secs
giá trị có thể là một số nguyên hoặc phao.
Ngoài ra, nếu bạn viết điều này trong ứng dụng Rails hoặc đã bao gồm thư viện ActiveSupport trong dự án của bạn, bạn có thể tạo các khoảng thời gian dài hơn bằng cú pháp tiện lợi sau:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Sử dụng giấc ngủ như vậy:
sleep 2
Nó sẽ ngủ trong 2 giây.
Hãy cẩn thận để đưa ra một lập luận. Nếu bạn chỉ chạy sleep
, quá trình sẽ ngủ mãi mãi. (Điều này hữu ích khi bạn muốn một sợi chỉ ngủ cho đến khi nó thức dậy.)
Tôi thấy until
rất hữu ích với giấc ngủ. thí dụ:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
có thể được sử dụng để ngủ cho đến khi đạt được bất kỳ điều kiện nào (cũng thích cách cú pháp tự nhiên cảm thấy)
sleep 6
sẽ ngủ trong 6 giây. Trong thời gian dài hơn, bạn cũng có thể sử dụng sleep(6.minutes)
hoặc sleep(6.hours)
.
minutes()
và hours()
là phương pháp trên numerics thêm bởi Ruby on Rails - vì vậy không đạt tiêu chuẩn có sẵn trong Ruby - trong lớp ActiveSupport :: Thời gian. Chúng khá thuận tiện mặc dù.
Thực hiện giây / phút / giờ, đó là phương pháp đường ray. Lưu ý rằng lợi nhuận ngầm không cần thiết, nhưng chúng trông sạch hơn, vì vậy tôi thích chúng hơn. Tôi không chắc Rails thậm chí còn có .day hoặc nếu nó đi xa hơn, nhưng đây là những thứ tôi cần.
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
Sau này, bạn có thể làm:
sleep 5.seconds
ngủ trong 5 giây. Bạn có thể làm sleep 5.minutes
để ngủ trong 5 phút. Bạn có thể làm sleep 5.hours
để ngủ trong 5 giờ. Và cuối cùng, bạn có thể sleep 5.days
ngủ trong 5 ngày ... Bạn có thể thêm bất kỳ phương thức nào trả về giá trị của bản thân * (số giây trong khung thời gian đó). Như một bài tập, hãy thử thực hiện nó trong nhiều tháng!