कैसे बाहर निकलें संदेश बनाने के लिए


208

क्या एक लाइन फ़ंक्शन कॉल है जो प्रोग्राम को क्विट करता है और एक संदेश प्रदर्शित करता है? मुझे पता है कि पर्ल में यह उतना ही सरल है:

die("Message goes here")

मैं यह लिखकर थक गया हूँ:

puts "Message goes here"
exit

10
एक छोटी सी टिप्पणी, आपका putsलेखन stdout को, जबकि diestderr को लिखते हैं, इसलिए $stderr.puts "Message goes here":।
cdarke

मुझे पता है कि यह कोई जवाब नहीं था, लेकिन इसने मेरे सवाल का जवाब दिया, धन्यवाद
पैट्रिक

केवल संदर्भ के लिए, पायथन में यह है sys.exit("Message goes to stderr")
अनातोली टेकटोनिक

जवाबों:


361

abortसमारोह करता है। उदाहरण के लिए:

abort("Message goes here")

नोट: जिस abortसंदेश को लिखा जाएगा उसके STDERRविपरीत संदेश लिखा putsजाएगा STDOUT


6
वाह! अच्छा लगा! बहुत बुरा वे सिर्फ इस कार्यक्षमता के साथ बाहर निकलने अधिभार नहीं था ....
माइक स्टोन

56
ध्यान दें, गर्भपात कार्यक्रम को झूठ की स्थिति से बाहर निकालता है जो विफलता का प्रतिनिधित्व करता है। डिफ़ॉल्ट रूप से बाहर निकलना सफलता का प्रतिनिधित्व करने वाली सच्ची स्थिति के साथ बाहर निकलता है। सुनिश्चित करें कि आप स्थिति के लिए सही एक का उपयोग करते हैं।
एलेक्स स्पर्लिंग

1
कर रहे हैं। माइक स्टोन की टिप्पणी, यह कभी-कभी ऐसा लगता है जैसे रूबी को उन लोगों की टीम द्वारा लिखा गया था, जिनका एक दूसरे से कोई संवाद नहीं था, है न? (फिर भी, इसमें प्रोग्राम करना इतना आसान है।)
जेल्केलट कैट

24

यदि आप अपने कोड में एक वास्तविक त्रुटि को दर्शाना चाहते हैं, तो आप एक RuntimeErrorअपवाद उठा सकते हैं:

raise RuntimeError, 'Message goes here'

यह एक स्टैकट्रेस, उठाए जाने वाले अपवाद के प्रकार और आपके द्वारा प्रदान किए गए संदेश को प्रिंट करेगा। आपके उपयोगकर्ताओं के आधार पर, एक स्टैच्रेस बहुत डरावना हो सकता है, और वास्तविक संदेश शोर में खो सकता है। दूसरी ओर, यदि आप एक वास्तविक त्रुटि के कारण मर जाते हैं, तो स्टैकट्रेस आपको डीबगिंग के लिए अतिरिक्त जानकारी देगा।


24
आपको एक को बढ़ाने के लिए RuntimeError का उल्लेख करने की आवश्यकता नहीं है (यह उठाए गए अपवाद का डिफ़ॉल्ट प्रकार है) इसलिए निम्न कोड पर्याप्त होगा: 'संदेश यहाँ जाता है'
बढ़ाएँ

सनकु - जबकि आपकी टिप्पणी पूरी तरह से मान्य है, मैंने अक्सर पाया कि अधिक स्पष्ट होना उपयोगी हो सकता है, विशेष रूप से अन्य लोगों के लिए बाद में कोड पढ़ना।
Shev

2

मैंने इस तरह के समारोह के बारे में कभी नहीं सुना है, लेकिन इसे लागू करने के लिए काफी तुच्छ होगा ...

def die(msg)
  puts msg
  exit
end

फिर, अगर इसे कुछ .rb फ़ाइल में परिभाषित किया गया है, जिसे आप अपनी सभी लिपियों में शामिल करते हैं, तो आप सुनहरे हैं .... सिर्फ इसलिए कि यह अंतर्निहित नहीं है इसका मतलब यह नहीं है कि आप इसे स्वयं नहीं कर सकते हैं ;-)


3
'एबॉर्ट' फंक्शन करता है, यह पता चलता है (नीचे मेरा जवाब देखें)
क्रिस बंच

1
जब आप के लिए गर्भपात समारोह करता है तो कोड क्यों लिखें?
गैरी हरण

2
@ क्रिसबंच यह गर्भपात समारोह के समान नहीं है : exitवापसी करने के लिए डिफॉल्ट करता है जैसे कि यह सफल हुआ है। abortएक विफलता देता है। exit 1एक विफलता के रूप में अच्छी तरह से वापस आ जाएगी।
टेम्पोरलवुल्फ़

2

जब भी कार्यक्रम समाप्त होता है, मैं कुछ कोड निष्पादित करने का तरीका खोजता हूं।
यह मिला :

Kernel.at_exit { puts "sayonara" }
# do whatever
# [...]
# call #exit or #abort or just let the program end
# calling #exit! will skip the call

कई बार कॉल करने पर कई हैंडलर पंजीकृत होंगे।

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