2013-05-17 9 views
7

मैं जो दस्तावेज पा सकता हूं वह कहता है कि रुबी 2.0 तक कीवर्ड तर्क पेश नहीं किए गए थे।रूबी 1.9.3 में कीवर्ड तर्क हैं?

लेकिन सरणी # फेरबदल लग रहा है कि यह एक कीवर्ड तर्क 'यादृच्छिक' कहा जाता है जैसे: http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle

इस एक कीवर्ड तर्क है? यदि नहीं, तो यह क्या है? कीवर्ड तर्कों के अन्य उपयोग रूबी 1.9.3 में हैं?

+1

http://brainspec.com/blog/2012/10/08/keyword-arguments-ruby-2-0/ यहां कुछ क्या हो रहा है इसके कुछ उदाहरण हैं। – Puhlze

उत्तर

5

रूबी 1.9.3 में पैरामीटर नहीं हैं, लेकिन हैश के लिए अतिरिक्त चीनी जोड़ा गया है। तो {:key => 'val'}{key: 'val'} के बराबर है। आप जो देखते हैं वह हैश को पैरामीटर के रूप में पास किया जा रहा है।

आप विधि आप इशारा के स्रोत को देखें, तो आप इस देखेंगे:

:

rb_ary_shuffle(int argc, VALUE *argv, VALUE ary) 
{ 
    ary = rb_ary_dup(ary); 
    rb_ary_shuffle_bang(argc, argv, ary); 
    return ary; 
} 

और shuffle! विधि में, आप इसे पुष्टि कर सकते हैं इस भाग को देखकर एक हैश है

if (OPTHASH_GIVEN_P(opts)) { 
     randgen = rb_hash_lookup2(opts, sym_random, randgen); 
    } 
4

नहीं, ऐसा नहीं है। यह एक हैश है। प्रस्तुति विफलता के कारण आपका अंतिम प्रश्न अपरिभाषित है।

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