संपादित करें: तीन साल बाद; बार, वे एक-'बदल रहे हैं ...
Julik's answer सरल और सबसे अच्छा तरीका है समस्या से निपटने के लिए इन दिनों है:
class Foo
attr_accessor :dead
alias_method :dead?, :dead # will pick up the reader method
end
मूल प्रश्न के लिए मेरा जवाब भावी पीढ़ी के लिए, इस प्रकार है ...
लघु संस्करण:
आप एक उदाहरण चर के नाम पर एक प्रश्न चिह्न का उपयोग नहीं कर सकते हैं।
अब संस्करण: -:
def foo
@foo
end
def foo=(newfoo)
@foo = newfoo
end
इसके अलावा, प्रश्न चिह्न प्रत्यय ज्यादातर बस है
उदाहरण के लिए, attr_accessor :foo
यह बस धारणात्मक निम्नलिखित के लिए वाक्यात्मक चीनी का एक सा यह इंगित करने के लिए एक सम्मेलन है कि एक विधि का वापसी मूल्य एक बूलियन है।
सबसे अच्छा सन्निकटन मैं तुम यहाँ के लिए क्या जा रहे हैं के लिए कर सकते हैं ...
class MyClass
def initialize
@awesome = true
end
def awesome?
@awesome
end
end
इस मामले में, हो सकता है एक मामले attr_accessor
प्रयोग करने के लिए किए जाने के लिए - सब के बाद, यह स्पष्ट हो सकता है आप सीधे एक बुलियन विशेषता के साथ काम कर रहे हैं। आम तौर पर, जब मैं एक विधि को कार्यान्वित कर रहा हूं, तो मैं प्रश्न-चिह्न प्रत्यय को सहेजता हूं जिसका बूलियन रिटर्न मान केवल एक विशेषता के मूल्य की तुलना में थोड़ा अधिक जटिल स्थितियों पर आधारित होता है।
चीयर्स!
संपादित करें, दो साल बाद, हाल ही में टिप्पणी के बाद:
- रूबी कुछ नामकरण सम्मेलनों लागू करता है।
रूबी में प्रतीकों के प्रश्न चिह्न नहीं हो सकते हैं। इस प्रकार :my_boolean_attribute?
दोनों के आमंत्रण NameError
के साथ विफल हो जाएंगे। संपादित करें: सही नहीं, केवल प्रतीक के लिए उद्धृत वाक्यविन्यास का उपयोग करें, उदाहरण के लिए, :"my_attribute?"
- प्रतीक अपरिवर्तनीय हैं, किसी को असाइन करने का प्रयास करने से
SyntaxError
फेंक दिया जाएगा।
स्रोत
2009-08-11 22:09:53
रूबीस्ट आमतौर पर is_ उपसर्ग का उपयोग नहीं करता है न तो परिवर्तनीय नामों में और न ही विधि नामों में। बस कमाल? is_awesome के बजाय? –
अच्छा बिंदु, weppos। उलझन में आने से बचने के लिए 'is_' संपादित किया गया ;-) –
इस उत्तर से मैं इकट्ठा करता हूं कि असली सम्मेलन नहीं है? :/ –