2011-03-12 19 views
37

मैं क्यों रूबी के आत्मनिरीक्षण संबंधित विधि की जांच करने के लिए एक वस्तु से प्रतिक्रिया करता है, तो के लिए एक विधि respond_to? बजाय responds_to?रुबी प्रतिक्रिया_to का उपयोग क्यों करता है? responds_to के बजाय?

यह हमेशा मेरे लिए अजीब लगता है, लेकिन हो सकता है कि क्योंकि मैं उद्देश्य-सी में respondsToSelector करने के लिए इस्तेमाल कर रहा हूँ है उत्सुक हूँ।

+1

शायद यह अनिवार्य होने की कोशिश कर रहा है: अरे आप ऑब्जेक्ट करते हैं, जवाब दें! – julkiewicz

+0

मुझे विश्वास नहीं है कि इस सवाल से पहले नहीं पूछा गया है! –

उत्तर

66

Matz prefers दूसरे व्यक्ति एकवचन या तीसरे व्यक्ति बहुवचन: "responds_to"

शायद "answer_to?" से अंग्रेजी बोलने वालों को समझ में आता है।

शायद। लेकिन मैं जापानी हूँ। रूबी अंग्रेजी नहीं है। मानक पुस्तकालयों में तीसरे व्यक्ति एकवचन रूप से बचने के लिए यह मूल नामकरण नियम है।

you = Human.new 
    if you.respond_to?(:knock) 
    ... 
    end 
+1

मेरा मानना ​​है कि यह नहीं है कि मैट दूसरे व्यक्ति को एकवचन या तीसरा व्यक्ति बहुवचन पसंद करता है, लेकिन वह एक क्रिया के डिफ़ॉल्ट (कम से कम infinitive) रूप पसंद करता है। – sawa

+0

@sawa जापानी क्रियाओं के "शब्दकोश फ़ॉर्म" (यदि यह 辞書 形 के लिए सही शब्द है) की तरह है? –

+0

हां। लेकिन जापानी में व्यक्ति-संख्या अनुबंध नहीं है, इसलिए जापानी में कोई अंतर नहीं है। इसे आमतौर पर 終止 形 (अंतिम रूप) कहा जाता है। – sawa

7

आप कैसे पता चलेगा कि रिसीवर हमेशा तीसरे व्यक्ति विलक्षण है? यह संभव है कि रिसीवर I, we, you, या they, या बहुलता का प्रतिनिधित्व करने वाली कुछ अन्य चीज़ हो। उस स्थिति में, क्या आप अभी भी कहेंगे कि responds_to?respond_to? से अधिक प्राकृतिक है? सामान्यता को संरक्षित करने के लिए, एक विधि को यथासंभव सामान्य रूप में एक विधि का नाम देना बेहतर है। तीसरे व्यक्ति के एकवचन में एक विधि का नामकरण करने के बजाय, इसे डिफ़ॉल्ट रूप से नाम देने के लिए अधिक समझदारी होती है, से -हीन infinitive form, जिसका उपयोग शब्दकोशों में भी किया जाता है।

+1

मुझे लगता है कि मैं हमेशा रिसीवर के बारे में सोचता हूं 'इसे'। – nroose

संबंधित मुद्दे