2016-01-11 4 views
6

String#match और Regexp#match एक MatchData लौट जब मैच सफल होता है:'प्रतीक # मिलान' क्यों 'स्ट्रिंग # मैच` और' Regexp # match` से अलग व्यवहार करता है?

"".match(//) # => #<MatchData ""> 
//.match("") # => #<MatchData ""> 
//.match(:"") # => #<MatchData ""> 

लेकिन मैच स्थिति Symbol#match रिटर्न (जैसे String#=~):

:"".match(//) # => 0 

क्यों Symbol#match व्यवहार अलग ढंग से करता है? क्या कोई उपयोग मामला है?

+0

वास्तव में बहुत अजीब निर्णय ... – ndn

+0

अच्छा सवाल है। कम से कम यह 'प्रतीक # मिलान' के लिए प्रलेखन में उल्लिखित है: _Returns sym.to_s = ~ obj_। तो यह उद्देश्य है। – knut

+1

किसी भी तरह से संबंधित: http://stackoverflow.com/questions/4884242/why-does-ruby-not-symbol-regex-match-operator – knut

उत्तर

1

मैंने इसे रूबी कोर में एक बग के रूप में बताया: https://bugs.ruby-lang.org/issues/11991। चलो देखते हैं कि वे क्या कहेंगे।


अद्यतन पूछताछ की व्यवहार एक बग किया गया है लगता है। ऐसा लगता है कि रुबी 2.4, Symbol#match से एक मैच सफल होने पर MatchData उदाहरण वापस कर देगा।

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