Apakah ada kemungkinan untuk mengembalikan beberapa nilai dari metode? Sesuatu seperti ini:
def someMethod()
return ["a", 10, SomeObject.new]
end
[a, b, c] = someMethod
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
>>
prompt irb akan hilang.def foo_and_bar; ['foo', 'bar']; end
Ruby memiliki bentuk destructuring bind yang terbatas:
Ini juga memiliki bentuk penataan ikatan yang terbatas:
Anda dapat menggabungkan kedua bentuk tersebut seperti ini:
Ada beberapa hal lain yang dapat Anda lakukan dengan destructuring / structuring bind. Saya tidak menunjukkan menggunakan operator percikan (
*
) di sisi kanan. Saya tidak menunjukkan bersarang (menggunakan tanda kurung). Saya tidak menunjukkan bahwa Anda dapat menggunakan destructuring bind dalam daftar parameter dari sebuah blok atau metode.Ini hanya makanan pembuka:
sumber
Meskipun mengembalikan beberapa nilai sering kali berguna, saya biasanya menganggapnya sebagai penunjuk ke persyaratan objek baru.
Artinya, saya biasanya menemukan bahwa nilai-nilai kembali itu terkait erat dalam makna / konteks dan diteruskan seperti itu. Jadi dalam kasus ini saya akan membuat objek baru untuk mengikat ini bersama-sama. Ini adalah bau kode tertentu yang telah saya pelajari untuk dikenali.
sumber
chunk
itu tidak akan ada. Prinsip yang sangat baik. Kode memang berbau. Teruskan.Anda juga dapat mencapai ini mengembalikan larik, seperti
yang tampaknya secara fungsional setara dengan
sumber