Reza Primardiansyah wrote: > Aku tau itu metaprogramming stuff, tapi apa gunanya di > program tsb? apa yg haruskan itu ada ? apa efeknya > kalo tanpa class<<self
class << self itu jargon ruby, pak. Berikut adalah inti sari yang saya ambil dari referensi buku tulisannya Mas Hal Fulton, yg judulnya [Ruby Way 2nd Edition, Terbitan Addison Wesley](http://amazon.com "Belinya disini OR pas ketemu Hal di mars dihajar"). Disini saya pakai bahasa Indonesia saja ya, buat yang ingin bahasa Inggris langsung bisa merujuk ke panduan buku aslinya (baca sendiri). Istilah singleton kadang terlalu sering digunakan. Singleton berguna untuk mengingat kata dalam bahasa Inggris yang baik pada rujukan ke "sesuatu" siapa saja yang unik. Sepanjang kita dapat menggunakannya sebagai modifier, seharusnya tidak perlu bingung. Pattern (Pola?) singleton merupakan design pattern yang sudah terkenal dimana ada kelas yang membolehkan dirinya diinstansiasi sekali saja, jadi library singleton di Ruby mengimplementasikan pattern model begini. Kelas singleton di Ruby seperti entitas kelas dimana metode-metode yang disimpan itu per-obyek bukan per-kelas. Jadi kalau ada yang bilang kelas singleton merupakan "true class" itu juga masih diperdebatkan. Berikut adalah contoh bagaimana membuka kelas singleton untuk obyek string dan menambahkan metode (ke string tersebut). str = 'arie_kangen_pak_reza' class << str def hyphenated self.split(//).join("-") end end nah lalu kita tambahkan metodenya ke str ya: str.hyphenated => "a-r-i-e-_-k-a-n-g-e-n-_-p-a-k-_-r-e-z-a" sebagian orang mulai menggunakan istilah eigenclass dalam hal ini, diturunkan dari eigen dalam bahasa Jerman yang berarti "its own" (or punya si anu sendiri?) dan juga dihubungkan dengan istilah dari matematika dan fisika seperti eigenvalue. Istilah yang cerdik, tetapi istilah "eigenclass" ini tidak digunakan di seluruh komunitas, dan bahkan sebagian orang benci istilah tsb. Mari kita kembali ke contoh tadi. Karena metode hyphenated ada di dalam obyek yang tidak ada atau kelas, maka metode hyphenated tersebut merupakan metode singleton di dalam obyek tersebut. Ini istilah yang tidak ambigu, bukan? Kadang ada obyek dirinya sendiri disebut singleton karena obyek tersebut merupakan satu-satunya obyek yang memiliki metode itu juga. Tetapi ingatlah bahwa di Ruby, kelas sendiri pun juga merupakan obyek Maka kita bisa menambahkan metode pada kelas miliknya kelas singleton, dan metode tersebut sifatnya akan unik pada obyek ybs, yang mana obyek tersebut merupakan kelas. Contohnya begini: class KelasSaya class << self def halo # ini cara lain, kalo ariekeren pingin gini bisa juga: def self.halo puts "Halo dari #{self}!" end end end atau bisa juga selain self.halo bisa juga gini: KelasSaya.halo itu sama singleton juga. Jadi kita tidak perlu membuat obyek instan KelasSaya untuk memanggil metode halo. Nah, setelah saya panjang lebar cerita gini, pak, pasti pak reza bakal tercenung lalu merenung hingga akhirnya terbangun.... yang saya bahas barusan tadi contoh itu kan ya metode kelas di Ruby juga. Ternyata ujung-ujungnya panjang-panjang arie ngomong ya senada juga sama yang Yohanes ceritakan dengan codes itu :-D Gimana? buat Rubyist lainnya kalau ada yang kesulitan atau malah tambah bingung, harus posting ya.. supaya ilmunya selain ngendap juga langsung sekalian "learning by doing" = belajar langsung dengan dipraktekkan. Kita situs resmi sudah ada, dokumentasi sudah tinggal enak, jadi kalau dari level tim ruby-lang internasional tinggal diadakan feedback, kalau ada kesulitan atau malah jadi bingung tinggal bilang. Tinggal habis gitu kita bahas soal fitur Fiber nih ya? Atau soal kapan symbol ruby di GC beserta keunggulan2xnya. ;-) ini pasti Yohanes atau Ridho yang katanya suka mainan Ruby 1.9 atau yang ruby di trunk svn langsung tergelitik pingin bahas, no? Tapi plis jangan tanya balik ke saya pertanyaannya/masalahnya apa ya :-) soalnya jujur saya masih belum berpikiran punya masalah sampai ke urusan sana-sana... gak tau kalau sang moderator algoritma yang ada disini mau angkat bicara (Felix?), gimana kehebatan dan kekuatan fitur Fiber di Ruby 1.9 yang gosipnya dirilis akhir tahun ini bakal mendongkrak tuning algoritma kita-kita (termasuk saya) yang masih di taraf merangkak belajarnya ini. (ehm ehm.. knock knock.. otherwise I'll talk with ya directly when I'm in Singapore). Hyoweis sodara2x, salam OOT. -_- -- Arie | http://www.linkedin.com/in/ariekeren http://ariekusumaatmaja.wordpress.com | http://groups.yahoo.com/groups/id-ruby Never say RTFM. Turn the trolls into committers (Audrey Tang, conisli-ofun.pdf)

