"Arie Kusuma Atmaja" <[EMAIL PROTECTED]> writes:
> puts *(1..2)
>
> sempat terpikir secara rumit sampai ke Object.respond_to?("*") yang tentu
> result return false.
> tapi coba berpikir sederhana aja malah gampang:
>
> puts(*(1..2))
>
> artinya metode di ruby menerima tanda bintang sebagai pertanda obyek parameter
> tersebut
> dianggap sebagai array. jadi ini senada dengan puts (1..2).to_a
Saya tidak mengerti artinya senada di konteks ini. Semoga bukan
serupa, karena memang tidak serupa.
def foo(a,b=:unassigned)
puts "a=#{a.inspect} b=#{b.inspect}"
end
foo(*(1..2)) #=> a=1 b=2
foo([1,2].to_a) #=> a=[1, 2] b=:unassigned
``*`` di contoh atas itu disebut splat operator di ruby. Fungsinya
adalah untuk menjadikan operator argumentnya, ``(1..2)`` di kasus ini,
sebagai argument continuation sekarang. Sehingga jika berikutnya
terjadi method call, argument2x itu menjadi argument method callnya.
YS.