2010-10-04 13 views
5
a = Numeric.new # doesn't take an argument 

मैं इसके लिए उपयोग के मामले की कल्पना नहीं कर सकता। क्या आप?रुबी के पास संख्यात्मक क्यों है? नया?

+3

तुम्हारा मतलब 'Numeric.new' नहीं' संख्यात्मक # new' .... '#' का अर्थ है 'उदाहरण विधि' (लेकिन इस मामले में 'new' एक वर्ग विधि है) – horseyguy

+0

नहीं जानते हैं। शीर्षक सही धन्यवाद। – steenslag

उत्तर

3

Class वर्ग एक new उदाहरण विधि को परिभाषित करता है। और Numeric पर वर्ग विधि केवल उसमें से एक धारक है - यह कुछ भी नहीं करता है - यह उन निवासी अंगों में से एक के रूप में सोचें जो जानवरों को दूर के पूर्वजों से प्राप्त करते हैं - जैसे मनुष्यों पर परिशिष्ट।

ध्यान दें कि Numeric ऐसे Fixnum के रूप में और Float और उनके निकट संबंधी explictly new विधि undefine की उपवर्गों। मुझे लगता है कि उन्होंने Numeric के लिए इसे अपरिभाषित करने से परेशान नहीं किया क्योंकि इस वर्ग के प्रत्यक्ष उदाहरण वास्तव में मौजूद नहीं हैं, और इसे आसपास रखने में कोई हानि नहीं होती है।

+0

हाँ, कि कैसे मुझे पता चला है। फ्लोट.न्यू ('NaN') की कोशिश कर, irb में चारों ओर खेला, विफल (NoMethodError)। न्यूमेरिक.न्यू ("एनएन ') के लिए जा रहे हैं, जो एक बेकार (?) संख्यात्मक के साथ समाप्त हो रहा है। – steenslag

1

रूबी में सबकुछ एक वस्तु है, यहां तक ​​कि कक्षाएं भी हैं। तो Numeric के लिए कोई कन्स्ट्रक्टर नहीं होने का मतलब होगा कि Numeric कक्षा बिल्कुल नहीं है!

the docs पर एक नज़र डालें। यह बस एक बेस क्लास है। आप कभी नहीं करेंगे (ठीक है, यह बेहद असंभव होगा, वैसे भी :)) इसे सीधे इस्तेमाल करें।

+2

यह गलत है। कई रूबी क्लासेस में 'नई' विधि नहीं है, देखें: ट्रू क्लास, फाल्स क्लास, नील क्लास, फिक्सनम, फ्लोट, आदि – horseyguy

+1

एह, मामूली जानकारी। यदि कक्षा चाहती है तो एक वर्ग इसे 'नई' विधि को परिभाषित कर सकती है। संख्यात्मक नहीं है क्योंकि आप इसे उपclass करने में सक्षम होने के लिए हैं और इसे आधार के रूप में उपयोग करें। 'TrueClass' और इस तरह का उपयोग इस तरह नहीं किया जाना चाहिए। – rfunduk

+1

कि 'मामूली विस्तार' आपके इस बोल्ड स्टेटमेंट को पूरी तरह से अमान्य बनाता है: "इसलिए न्यूमेरिक के लिए कोई कन्स्ट्रक्टर नहीं होने का मतलब होगा कि कोई संख्यात्मक वर्ग नहीं है!" – horseyguy

1

आप उस फैशन में संख्यात्मक कक्षा का कभी भी उपयोग नहीं करेंगे। यह रूबी में सभी संख्यात्मक प्रकारों के लिए बेस क्लास है।

रूबी के संख्यात्मक कक्षाएं एक पूर्ण सांख्यिक टॉवर के रूप में, संख्या के अभ्यावेदन और संख्यात्मक अभ्यावेदन के कई प्रकार प्रदान करते हैं।

स्रोत: Ruby Tips: Numeric Classes

+3

लेकिन तुम समझा नहीं था क्यों 'new' अभी भी मौजूद है :) – horseyguy

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