2008/4/23 Yohanes Santoso <[EMAIL PROTECTED]>:
> "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.
bukan serupa, maksudnya adalah tujuan yang ingin dicapai adalah sama
(yakni menampilkan perulangan/looping dari satu hingga dua) dengan
varian cara yang beda. Bentuk puts di atas adalah pembanding dari
contoh codes dari php macam ini:
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
Terima kasih sudah diperjelas. sehingga mungkin untuk pemula ruby
tidak akan menulis
i = 1
while i <= 10
puts i
i += 1
end
di page rhtml nya. (ini satu contoh kasus nyata, saya pernah sering
lihat yang terbiasa menjadi programmer php menjadi begini codesnya).
BTW sekedar berbagi ada teman sebelah perempuan programmer iran
lumayan juga dia bisa bersih menuliskan array asosiatif (dimana
istilah php tersebut di ruby disebut Hash) untuk menjadi satu object
Hash yang ditangkap di satu method pada request POST. Contoh:
Sale.create!(params[:sale])
yang mana dia lah yang membentuk Hash (yang berada dalam params[:sale]
untuk kemudian di proses di model sale.rb) dari view nya (baik itu
berupa webservice murni dari php melempar ke ruby, maupun dari form
view dia sendiri di rails bikinan dia baru belajar).
Ada contoh teman-teman pemula yang lain yang ingin dibahas? Mis.
biasanya kalau dari php itu, seperti select option lumayan jadi
masalah, ada lagi kalau dulu pernah ditanya saya oleh yang sudah
terbiasa di Java kalau Range sama Time di ruby gimana. dst
> 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.
--
blog: http://tinyurl.com/2bjgvn
saya tak guna YM, saya guna email dan skype aja