না, রুবি আসলে দুটি বস্তু ফেরত সমর্থন করে না। (বিটিডাব্লু: আপনি ভেরিয়েবলগুলি নয়, বস্তুগুলি ফিরিয়ে দিন More
এটি সমান্তরাল কার্যভার সমর্থন করে। যদি আপনার একটি কার্যভারের ডানদিকে একাধিক অবজেক্ট থাকে তবে অবজেক্টগুলি একটিতে সংগ্রহ করা হয় Array:
foo = 1, 2, 3
foo = [1, 2, 3]
আপনার যদি একটি অ্যাসাইনমেন্টের বাম-পাশে একাধিক "টার্গেট" (ভেরিয়েবল বা সেটার পদ্ধতি) থাকে তবে ভেরিয়েবলগুলি ডান-হাতের অংশের সাথে আবদ্ধ হয়ে যায় Array:
a, b, c = ary
a = ary[0]
b = ary[1]
c = ary[2]
ডান হাতটি যদি একটি নাArray হয় তবে এটি to_aryপদ্ধতিটি ব্যবহার করে এটি একটিতে রূপান্তরিত হবে
a, b, c = not_an_ary
ary = not_an_ary.to_ary
a = ary[0]
b = ary[1]
c = ary[2]
এবং যদি আমরা দুজনকে একসাথে রাখি তবে আমরা তা পেয়ে যাই
a, b, c = d, e, f
ary = [d, e, f]
a = ary[0]
b = ary[1]
c = ary[2]
এটি সম্পর্কিত একটি অ্যাসাইনমেন্টের বাম-হাতের স্প্ল্যাট অপারেটর। এর মানে "নিতে সব বাম-উপর উপাদান Arrayডান-দিকে":
a, b, *c = ary
a = ary[0]
b = ary[1]
c = ary.drop(2)
এবং সর্বশেষে তবে সর্বনিম্ন নয়, প্রথম বন্ধনী ব্যবহার করে সমান্তরাল অ্যাসাইনমেন্টগুলি নেস্ট করা যেতে পারে:
a, (b, c), d = ary
a = ary[0]
b, c = ary[1]
d = ary[2]
a = ary[0]
b = ary[1][0]
c = ary[1][1]
d = ary[2]
আপনি যখন returnকোনও পদ্ধতি থেকে nextবা breakকোনও ব্লক থেকে চলে আসেন, রুবি কোনও অ্যাসাইনমেন্টের ডান হাতের মতো এই জাতীয় আচরণ করবে so
return 1, 2
next 1, 2
break 1, 2
return [1, 2]
next [1, 2]
break [1, 2]
যাইহোক, এটি পদ্ধতি এবং ব্লকগুলির পরামিতি তালিকায়ও কাজ করে (পদ্ধতিগুলি আরও কঠোর এবং ব্লকগুলি কম কঠোর হয়):
def foo(a, (b, c), d) p a, b, c, d end
bar {|a, (b, c), d| p a, b, c, d }
ব্লকগুলি "কম কঠোর" হওয়া উদাহরণস্বরূপ যা Hash#eachকাজ করে। এটা আসলে yieldSA একক দুই উপাদান Arrayকী এবং ব্লক মূল্যের, কিন্তু আমরা সাধারণত লেখার
some_hash.each {|k, v| }
পরিবর্তে
some_hash.each {|(k, v)| }