रूबी प्रोग्राम को कुछ समय प्रतीक्षा करने के लिए कहें


418

कोड की अगली पंक्ति पर जाने से पहले आप एक रूबी कार्यक्रम को समय की एक मनमानी राशि की प्रतीक्षा करने के लिए कैसे कहते हैं?

जवाबों:


675

ऐशे ही:

sleep(num_secs)

num_secsमान एक पूर्णांक या नाव हो सकता है।

इसके अलावा, अगर आप इसे रेल एप्लिकेशन के भीतर लिख रहे हैं, या अपनी परियोजना में ActiveSupport लाइब्रेरी को शामिल किया है, तो आप निम्नलिखित सुविधा सिंटैक्स का उपयोग करके लंबे अंतराल का निर्माण कर सकते हैं:

sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second

122

नींद का उपयोग करें :

sleep 2

वह 2 सेकंड के लिए सो जाएगा।

तर्क देने के लिए सावधान रहें। यदि आप बस चलाते हैं sleep, तो प्रक्रिया हमेशा के लिए सो जाएगी। (यह तब उपयोगी होता है जब आप एक धागा सोना चाहते हैं जब तक कि यह जाग न जाए।)


3
रुको, क्या यह हमेशा के लिए सो जाएगा, या जब तक यह "जाग" नहीं होगा? "वोकन" का क्या अर्थ है?
माइकल डोरस्ट

4
@anthropomorphic यह संदर्भित करता है कि जब कोई अन्य थ्रेड # रन चलाता है।
जोशुआ पिंटर

दरअसल, जब कोई दूसरा धागा थ्रेड # वेकअप कहता है, तो मुझे लगता है।
चेस्टरबर

2

मुझे untilनींद के साथ बहुत उपयोगी लगता है । उदाहरण:

> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true

यह वही बात हैsleep(10.seconds)
danielricecodes

हाँ, यहाँ यह वही है क्योंकि यह उसी इनपुट (समय) का उपयोग करता है जैसा कि सोने के द्वारा दिया जाता है। मैं इस बात पर प्रकाश डालना चाहता था untilकि किसी भी स्थिति को प्राप्त करने तक नींद कैसे आ सकती है (सिंटैक्स भी कितना स्वाभाविक लगता है) से प्यार करें
वरुण गर्ग

1

sleep 66 सेकंड के लिए सो जाएगा। लंबी अवधि के लिए, आप भी उपयोग sleep(6.minutes)या कर सकते हैं sleep(6.hours)


4
इस पर डाउनवोट के बारे में निश्चित नहीं है, लेकिन यह हो सकता है minutes()और hours()रूबी द्वारा रेल पर जोड़े गए न्यूमेरिक्स के तरीके हैं - इसलिए रूबी में उपलब्ध मानक नहीं - ActiveSupport :: Duration क्लास में। वे हालांकि काफी सुविधाजनक हैं।
जोकेम शुल्नेक्लोपर १oc ’१ul को ul:००

11
मुझे लगता है कि डाउनवोट्स का प्राथमिक कारण यह है कि @vijaya_chowdary ने 8 साल बाद मूल रूप से मतदान का सही उत्तर दिया था। मुझे लगता है कि यह कम से कम अजीब है ...
StahlRat

1
मैं बिल्कुल उसके लिए नीचा दिखाया। यह मानक माणिक नहीं है।
हायसेक

1

सेकंड / मिनट / घंटे का कार्यान्वयन, जो रेल के तरीके हैं। ध्यान दें कि निहित रिटर्न की आवश्यकता नहीं है, लेकिन वे क्लीनर दिखते हैं, इसलिए मैं उन्हें पसंद करता हूं। मुझे यकीन नहीं है कि रेल के पास दिन भी होते हैं या अगर यह आगे बढ़ता है, लेकिन ये वही हैं जिनकी मुझे ज़रूरत है।

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.seconds5 सेकंड के लिए सोने के लिए। आप sleep 5.minutes5 मिनट के लिए सोने के लिए कर सकते हैं । आप sleep 5.hours5 घंटे सोने के लिए कर सकते हैं । और अंत में, आप sleep 5.days5 दिनों के लिए सो सकते हैं ... आप किसी भी विधि को जोड़ सकते हैं जो स्वयं का मान लौटाता है * (उस समय सीमा में सेकंड की राशि)। एक अभ्यास के रूप में, इसे महीनों तक लागू करने का प्रयास करें!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.