Anda mungkin sudah familiar dengan singkatan Ruby berikut ( ais an array):
a.map(&:method)
Misalnya, coba yang berikut ini di irb:
>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
Sintaksnya a.map(&:class)adalah singkatan dari a.map {|x| x.class}.
Baca lebih lanjut tentang sintaks ini di " Apa arti map (&: name) di Ruby? ".
Melalui sintaks &:class, Anda membuat panggilan metode classuntuk setiap elemen array.
Pertanyaan saya adalah: dapatkah Anda memberikan argumen ke pemanggilan metode? Dan jika ya, bagaimana caranya?
Misalnya, bagaimana Anda mengonversi sintaks berikut
a = [1,3,5,7,9]
a.map {|x| x + 2}
ke &:sintaks?
Saya tidak menyarankan bahwa &:sintaksnya lebih baik. Saya hanya tertarik pada mekanisme penggunaan &:sintaks dengan argumen.
Saya berasumsi Anda tahu itu +adalah metode pada kelas Integer. Anda dapat mencoba yang berikut di irb:
>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2