উত্তর:
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
ডেস্ট্রাকচারিং / স্ট্রাকচারিং বাইন্ডের সাথে আপনি করতে পারেন এমন আরও বেশ কয়েকটি জিনিস রয়েছে। আমি *ডানদিকে স্প্ল্যাট অপারেটর ( ) ব্যবহার করে দেখায় নি । আমি বাসা বাঁধে না (প্যারান্থেস ব্যবহার করে)। আমি দেখিনি যে আপনি কোনও ব্লক বা পদ্ধতির প্যারামিটার তালিকায় ডেস্ট্রাকচারিং বাইন্ড ব্যবহার করতে পারেন।
এখানে কেবল একটি ক্ষুধা দেওয়া হয়েছে:
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]
একাধিক মান ফিরিয়ে দেওয়া প্রায়শই দরকারী, আমি সাধারণত এটি একটি নতুন বস্তুর প্রয়োজনীয়তার জন্য একটি পয়েন্টার পাই।
এটি হ'ল, আমি সাধারণত দেখতে পাই যে those প্রত্যাবর্তনের মানগুলি অর্থ / প্রসঙ্গে একত্রে আবদ্ধ এবং এরূপ হিসাবে পাস করা হয়েছে। সুতরাং এই ক্ষেত্রে আমি এগুলিকে এক সাথে বেঁধে রাখতে একটি নতুন অবজেক্ট তৈরি করব। এটি একটি নির্দিষ্ট কোড গন্ধ যা আমি চিনতে শিখেছি।
chunkঅস্তিত্ব থাকত না। যদিও দুর্দান্ত নীতি। কোড গন্ধ প্রকৃতপক্ষে। মন মাতান.
>>প্রম্পট দ্বারা সৃষ্ট অদ্ভুততা দূর হয়ে যাবে।