में cos मैं रूबी के साथ पीआई और कॉस के प्रकार के बारे में पूछना चाहता हूं। इन प्रकारों को लिखने के लिए सम्मेलन क्या है?पीआई का प्रकार क्या है, रुबी
क्या मैं लिख सकता हूं: Math::sin
, Math::PI
या Math.sin
, Math.PI
?
में cos मैं रूबी के साथ पीआई और कॉस के प्रकार के बारे में पूछना चाहता हूं। इन प्रकारों को लिखने के लिए सम्मेलन क्या है?पीआई का प्रकार क्या है, रुबी
क्या मैं लिख सकता हूं: Math::sin
, Math::PI
या Math.sin
, Math.PI
?
सबसे पहले, Math.PI
नहीं है, यह Math::PI
है - इस मामले में, वास्तव में काम करने वाले व्यक्ति का उपयोग करें।
[1] pry(main)> Math.PI
NoMethodError: undefined method `PI' for Math:Module
[2] pry(main)> Math::PI
=> 3.141592653589793
sin
आदि कार्य हैं, और किसी भी तरह से पहुँचा जा सकता है। मैं डॉट-नोटेशन, Math.sin(foo)
का उपयोग करता हूं, क्योंकि यह आंखों (राय की बात) पर आसान है, और अन्य रेल कोड को कैननिक रूप से लिखा गया है (जैसे रेल्स एक्टिव रिकार्ड findAll
, उदाहरण के लिए, User.findAll
), और मैं नियमित रूप से कितनी अन्य भाषाओं का उपयोग करता हूं कर दो।
संपादित करें ओह, मैंने सवाल को गलत समझा होगा।
यदि मुझे आपका प्रश्न सही लगता है तो आप उस मूल्य के प्रकार के लिए पूछ रहे हैं जो लौटाता है। इसके बजाय आपको यह बताते हुए कि, यह आपको अपने लिए जांचने का तरीका दिखाता है।
irb(main):003:0>Math::cos(0.2).class
=> Float
irb(main):004:0> Math::PI.class
=> Float
puts Math::PI
#=> 3.141592653589793
include Math
puts PI.class
#=> Float
require "bigdecimal/math"
include BigMath
puts PI(50).class
#=> BigDecimal
puts PI(50)
#=> 0.3141592653589793238462643383279502884197169399375105820974944592309049629352442819E1
आप include Math
अपने कोड में है, तो आप सिर्फ लिख सकते हैं:
PI
cos(0.12)
आप Math
उपसर्ग के लिए केवल जब Math
शामिल नहीं है की जरूरत है।
क्या आपने मैथ मॉड्यूल के चारों ओर लिपटे एक मणि का उपयोग करने की कोशिश की है? Math_calculator मणि देखें। इससे आपको सामान्य रूप से अपनी अभिव्यक्तियां लिखने की अनुमति मिल जाएगी, उदाहरण के लिए। "4 * pi * cos (0.12)" आदि
PI
एक निरंतर कि Math
मॉड्यूल के अंतर्गत आता है है। स्थिरांक ::
ऑपरेटर के माध्यम से पहुँचा रहे हैं:
Math::PI
मेरा मानना है कि यह गुंजाइश संकल्प ऑपरेटर कहा जाता है। यह भी वर्ग के तरीकों को हल कर सकते हैं, तो आप निश्चित रूप से लिख सकते हैं:
Math::sin
डॉट ऑपरेटर, वस्तुओं के लिए संदेश भेजता है जो इसे तरीकों कॉल कह का एक आधुनिक तरीका है। PI
एक स्थिर है, इसलिए आप इसे इस तरह से एक्सेस नहीं कर सकते हैं। Math.PI
Math.send :PI
के बराबर है, जो Math
respond_to? :PI
से काम नहीं करता है। बेशक, आप कि ठीक कर सकते हैं:
def Math.PI
Math::PI
end
Math.PI
method_missing
के साथ, आप भी यह के साथ काम किसी भी निरंतर बना सकते हैं:
def Math.method_missing(method, *arguments, &block)
Math.const_get method, *arguments, &block
end
Math.PI
Math.E
अच्छा ध्यान दें कि यद्यपि गणित :: पीआई नाव हो सकता है , आप पीआई को BigDecimal में बढ़ावा दे सकते हैं, यह इंगित करते हुए कि रूबी में 'प्रकार' कवक (सख्त नियमों के साथ) है। – ChuckCottrill