2012-06-11 9 views
6

में cos मैं रूबी के साथ पीआई और कॉस के प्रकार के बारे में पूछना चाहता हूं। इन प्रकारों को लिखने के लिए सम्मेलन क्या है?पीआई का प्रकार क्या है, रुबी

क्या मैं लिख सकता हूं: Math::sin, Math::PI या Math.sin, Math.PI?

उत्तर

1

सबसे पहले, 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), और मैं नियमित रूप से कितनी अन्य भाषाओं का उपयोग करता हूं कर दो।

संपादित करें ओह, मैंने सवाल को गलत समझा होगा।

0

यदि मुझे आपका प्रश्न सही लगता है तो आप उस मूल्य के प्रकार के लिए पूछ रहे हैं जो लौटाता है। इसके बजाय आपको यह बताते हुए कि, यह आपको अपने लिए जांचने का तरीका दिखाता है।

irb(main):003:0>Math::cos(0.2).class 
=> Float 
irb(main):004:0> Math::PI.class 
=> Float 
8
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 
+0

अच्छा ध्यान दें कि यद्यपि गणित :: पीआई नाव हो सकता है , आप पीआई को BigDecimal में बढ़ावा दे सकते हैं, यह इंगित करते हुए कि रूबी में 'प्रकार' कवक (सख्त नियमों के साथ) है। – ChuckCottrill

0

आप include Math अपने कोड में है, तो आप सिर्फ लिख सकते हैं:

PI 
cos(0.12) 

आप Math उपसर्ग के लिए केवल जब Math शामिल नहीं है की जरूरत है।

क्या आपने मैथ मॉड्यूल के चारों ओर लिपटे एक मणि का उपयोग करने की कोशिश की है? Math_calculator मणि देखें। इससे आपको सामान्य रूप से अपनी अभिव्यक्तियां लिखने की अनुमति मिल जाएगी, उदाहरण के लिए। "4 * pi * cos (0.12)" आदि

5

PI एक निरंतर कि Math मॉड्यूल के अंतर्गत आता है है। स्थिरांक :: ऑपरेटर के माध्यम से पहुँचा रहे हैं:

Math::PI 

मेरा मानना ​​है कि यह गुंजाइश संकल्प ऑपरेटर कहा जाता है। यह भी वर्ग के तरीकों को हल कर सकते हैं, तो आप निश्चित रूप से लिख सकते हैं:

Math::sin 

डॉट ऑपरेटर, वस्तुओं के लिए संदेश भेजता है जो इसे तरीकों कॉल कह का एक आधुनिक तरीका है। PI एक स्थिर है, इसलिए आप इसे इस तरह से एक्सेस नहीं कर सकते हैं। Math.PIMath.send :PI के बराबर है, जो Mathrespond_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 
संबंधित मुद्दे