जवाबों:
def sumdiff(x, y)
return x+y, x-y
end
#=> nil
sumdiff(3, 4)
#=> [7, -1]
a = sumdiff(3,4)
#=> [7, -1]
a
#=> [7, -1]
a,b=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
a,b,c=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
c
#=> nil
def foo_and_bar; ['foo', 'bar']; end
रूबी में विनाशकारी बाँध का एक सीमित रूप है:
ary = [1, 2, 3, 4]
a, b, c = ary
p a # => 1
p b # => 2
p c # => 3
a, b, *c = ary
p c # => [3, 4]
a, b, c, d, e = ary
p d # => 4
p e # => nil
इसका एक सीमित रूप बाँध संरचना भी है:
a = 1, 2, 3
p a # => [1, 2, 3]
आप उन दो रूपों को जोड़ सकते हैं जैसे:
a, b = b, a # Nice way to swap two variables
a, b = 1, 2, 3
p b # => 2
def foo; return 1, 2 end
a, b = foo
p a # => 1
p b # => 2
कई अन्य चीजें हैं जो आप विनाशकारी / संरचना बांधने के साथ कर सकते हैं। मैं दिखावा ऑपरेटर का उपयोग नहीं दिखा (* दाहिने हाथ की तरफ ) । मैंने घोंसले के शिकार (parantheses का उपयोग करके) नहीं दिखाया। मैंने नहीं दिखाया कि आप किसी ब्लॉक या विधि के पैरामीटर सूची में विनाशकारी बाँध का उपयोग कर सकते हैं।
यहाँ सिर्फ एक क्षुधावर्धक है:
def foo(((a, b, c, d), e, *f), g, *h)
local_variables.sort.each do |lvar| puts "#{lvar} => #{eval(lvar).inspect}" end
end
foo([[1, 2, 3], 4, 5, 6], 7, 8, 9)
# a => 1
# b => 2
# c => 3
# d => nil
# e => 4
# f => [5, 6]
# g => 7
# h => [8, 9]
कई मूल्यों को वापस करते हुए अक्सर उपयोगी होता है, मुझे आमतौर पर यह एक नई वस्तु की आवश्यकता के लिए एक संकेतक है।
यही है, मैं आमतौर पर पाता हूं कि उन रिटर्न मानों को अर्थ / संदर्भ में एक साथ जोड़ा जाता है और इस तरह से पास किया जाता है। इसलिए इन मामलों में मैं इन्हें एक साथ जोड़ने के लिए एक नई वस्तु बनाऊंगा। यह एक विशेष कोड गंध है जिसे मैंने पहचानना सीखा है।
chunkमौजूद नहीं होंगी। उत्कृष्ट सिद्धांत हालांकि। कोड गंध वास्तव में। रॉक ऑन।
>>प्रॉम्प्ट के कारण होने वाली अजीबता दूर हो जाएगी।