जवाबों:
तुम कर सकते हो
[5, 10].min
या
[4, 7].max
वे Enumerable मॉड्यूल से आते हैं , इसलिए कुछ भी जिसमें Enumerable
वे विधियाँ उपलब्ध होंगी।
v2.4 स्वयं का परिचय देता है Array#min
और Array#max
, जो एनुमरबल के तरीकों की तुलना में तेज़ हैं क्योंकि वे कॉल करना छोड़ देते हैं #each
।
@nicholasklick में एक अन्य विकल्प का उल्लेख है Enumerable#minmax
, लेकिन इस बार एक सरणी लौट रही है [min, max]
।
[4, 5, 7, 10].minmax
=> [4, 10]
std::max(4, 7)
है कि "विराम चिह्न" की तुलना में अधिक है [4, 7].max
?
std::max
आपके नामस्थान में आयात किया जा सकता है, इसलिए यह बस बन जाता है max(4, 7)
। रुको; ऊपर देखते हुए, मैं देखता हूं मैंने कहा कि पहले से ही।
आप उपयोग कर सकते हैं
[5,10].min
या
[4,7].max
यह Arrays के लिए एक विधि है।
उन सभी परिणामों में दो से अधिक तर्कों को संभालने के लिए एक उत्साही प्रयास में कचरा उत्पन्न होता है। मैं यह देखने के लिए उत्सुक हूँ कि वे अच्छे 'ol' की तुलना में कैसा प्रदर्शन करते हैं:
def max (a,b)
a>b ? a : b
end
जो, वैसे, मेरे आधिकारिक आपके प्रश्न का उत्तर है।
[a,b].max
, लेकिन यह अभी भी स्पष्ट नहीं है कि यह उपरोक्त कार्यान्वयन से तेज है या नहीं। blog.bigbinary.com/2016/11/17/…
यदि आपको हैश का अधिकतम / मिनट खोजने की आवश्यकता है, तो आप उपयोग कर सकते हैं #max_by
या कर सकते हैं#min_by
people = {'joe' => 21, 'bill' => 35, 'sally' => 24}
people.min_by { |name, age| age } #=> ["joe", 21]
people.max_by { |name, age| age } #=> ["bill", 35]
प्रदान किए गए उत्तरों के अलावा, यदि आप Enumerable # max को एक अधिकतम विधि में बदलना चाहते हैं जो एक चर संख्या या तर्कों को कॉल कर सकता है, जैसे कुछ अन्य प्रोग्रामिंग भाषाओं में, आप लिख सकते हैं:
def max(*values)
values.max
end
आउटपुट:
max(7, 1234, 9, -78, 156)
=> 1234
यह एरे ऑब्जेक्ट को प्रदान की गई तर्कों को बनाने के लिए स्पैट ऑपरेटर के गुणों का दुरुपयोग करता है या यदि कोई तर्क प्रदान नहीं किया जाता है तो खाली सरणी ऑब्जेक्ट। बाद के मामले में, विधि वापस आ जाएगी nil
, क्योंकि Enumerable # max को खाली सरणी ऑब्जेक्ट रिटर्न पर कॉल करना nil
।
यदि आप मैथ मॉड्यूल पर इस विधि को परिभाषित करना चाहते हैं, तो यह ट्रिक करना चाहिए:
module Math
def self.max(*values)
values.max
end
end
ध्यान दें कि Enumerable.max, कम से कम, टर्नरी ऑपरेटर ( ?:
) की तुलना में दो गुना धीमा है । सरल और तेज़ विधि के लिए डेव मोर्स का उत्तर देखें ।
def find_largest_num(nums)
nums.sort[-1]
end