|
|
||
|
User login Navigation |
Submitted by theadmin on Wed, 01/23/2008 - 15:47.
PengenalanIni adalah satu tutorial ruby yang akan mengambil lebih kurang 20 minit untuk diselesaikan. Ia menganggap anda telahpun meng-install Ruby. (Jika belum, anda boleh mendapatkan Ruby dibahagian download pada ruby-lang.org dan install Ruby terdahulu sebelum bermula dengan tutorial ini). Tutorial ini dialihbahasa daripada Ruby in Twenty Minutes Interactive Ruby (IRB) Mulakan IRB
[source:ruby] irb(main):001:0> Daripada sini, taipkan "Hello World"
Yang Menurut PerintahMelihat daripada yang tertera pada console, adakah kita telah membuat program 'Hello World' paling ringkas di dunia? Sebenarnya barisan ke-2 itu adalah cara IRB memberitahu kita hasil aturcara terakhir dinilai. Jikalau kita mahu memaparkan 'Hello World' pada skrin, kita memerlukan sedikit tambahan.
puts adalah arahan Ruby yang asas untuk memaparkan sesuatu. Tapi apa pula '=> nil' yang ditunjukkan oleh irb? Ia adalah hasil aturcara puts yang sentiasa memulangkan nilai 'nil'. 'nil' bermaksud tanpa nilai. Kalkulator percuma!Sekarang kita akan menggunakan Ruby sebagai kalkulator.
Tiga tambah dua. Mudah sahaja. Bagaimana pula dengan tiga darab dua? Anda boleh menaip semula statement ini atau dapatkan kembali statement tadi (3+2) dan menukarkan tanda operasi. Cuma gunakan up-arrow pada keyboard dan gunakan left/right arrow untuk pergi ke tanda + dan gantikan dengan tanda *.
Sekarang, 3 kuasa 2:
Dalam Ruby, x**y adalah bermaksud 'x kuasa y'. Bagaimana pula untuk dapatkan punca kuasa sesuatu nilai?
Di sini kita diperkenalkan dengan salah satu module asas Ruby iaitu Maths. Module mempunyai 2 kegunaan didalam Ruby. Ia menghimpunkan kumpulan function-function yang bertujuan sama. Math menghimpunkan function-function seperti sin() dan tan(). Kegunaan kedua ialah titik perpuluhan. Titik perpuluhan ini digunakan untuk mengenalpasti siapakan penerima sesebuah message. Apakah message ini? Message adalah parameter atau nilai yang dimasukkan ke dalam sesuatu function. Dalam statement terakhir kita, sqrt() adalah function didalam module Math dan 9 itu adalah parameter yang digunakan. Perhatikan hasil yang dipulangkan adalah bukan integer dan adalah jenis float (yang mempunyai titik perpuluhan). Ini kerana kebanyakan hasil punca kuasa sesuatu nombor adalah bukan integer, jadi method ini direka untuk memulangkan nombor float. Jika kita hendak Ruby mengingati hasil function tadi untuk kegunaan tertentu, simpan nilai tadi di dalam sebuah variable.
Kita kembali kepada tradisi tutorial awalan iaitu memfokuskan kepada aplikasi Hello World. Jika pada awalnya kita mahu ucapkan 'Hello World' hanya sekali, bagaimana pula kita hendak mengucapkan ia berkali-kali tanpa melenguhkan jari-jemari kita untuk menaip? Caranya mudah, kita definasikan ia sebagai sesuatu method (atau function, jika anda selesa dengan istilah ini).
Kod ini bermula dengan 'def h'. h adalah nama method yang kita bina dan kata kunci def (untuk define) adalah untuk memberitahu Ruby bahawa kita ingin mendefinasikan satu method bernama h. Barisan seterusnya kita masukkan statement untuk memaparkan 'Hello World' dan pada barisan terakhir definasi method ini, terdapat end untuk memberitahu Ruby yang kita selesai mendefinasikan method ini. irb melaporkan => nil untuk memberitahu kita bahawa Ruby memahami kita selesai mendefinasikan method. Satu Method Yang Mudah Dan Berulang-UlangMari kita gunakan method yang kita definasikan tadi:
Mudah sahaja, kan? Memanggil method didalam Ruby adalah semudah menaip namanya di dalam Ruby. Jika method itu tiada parameter yang perlu kita isikan, itulah sahaja yangkita perlu buat: taipkan sahaja nama method tadi. Bagaimana pula kita hendak mengatakan hello kepada seorang sahaja? Kita akan tukarkan definasi method h untuk mengambil nama orang itu sebagai parameter.
Ia berjaya tetapi mari kita lihat apa yang telah berlaku. Pengisian StringApakah maksud #{name}? Ia adalah cara memasukkan sesuatu nilai sesuatu variable ke dalam string. Ia akan menukarkan nilai yang tersimpan antara #{ dan } kepada string (jika ia bukannya string) dan memasukkan ke dalam string tadi. Kita akan membuat sedikit perubahan untuk memastikan huruf besar digunakan pada huruf pertama name.
Evolusi GreeterPada bahagian ini, kita akan mula mendefinasikan class.
Kata kunci baru pada bahagian ini adalah 'class'. Ia memberitahu Ruby yang kita sedang mendefinasikan satu class bernama Greeter dan beberapa method untuk class itu. Perhatikan @name. Lihat juga dimana ia digunakan, di method say_hi dan di method say_bye. Ia adalah sejenis variable yang dipanggil instance variable. Apabila class ini digunakan untuk menjadi satu object, jika @name diberi satu nilai, nilai ini akan dapat digunakan pada kesemua method Greeter ini. Mari kita bina satu object daripada class Greeter ini.
Apabila object g dibina, ia mengingati namanya adalah Pat. Bolehkah kita mendapatkan nama object itu secara terus?
Ooops! Nampaknya tak boleh. :D Didalam ObjekInstance variable disorok di dalam object. Akan tetapi ia tidak disorok dengan bersungguh-sungguh, kita masih dapat melihatnya apabila kita meneliti object dengan kaedah tertentu. Ini adalah pendekatan berorientasikan objek. Bagaimana kita hendak mengetahui method-method yang ada untuk object Greeter?
Banyak! Tetapi kita hanya mendefinasikan 2 method. Bagaimanakah senarai ini boleh menjadi begitu panjang? Ini sebenarnya kesemua method yang ada untuk object Greeter. Ini bermakna ia termasuk method yang telah diwarisi oleh object Greeter. Jika kita mahu yang didefinasikan untuk Greeter, kita perlu memberitahu Ruby yang kita tidak mahu method-method yang diwarisi dengan memberi parameter false.
Sekarang baru betul. :) . Berikut adalah cara untuk melihat samada sesuatu method itu boleh terus dipanggil atau tidak.
Kita dapat lihat say_hi dan to_s (ini untuk menukarkan sesuatu nilai kepada string. Ia didefinasikan secara automatik pada semua objek) boleh dipanggil secara terus tetapi tidak name. Menukarkan Class Bagaimana pula jika kita mahu melihat atau menukar name pada object itu? Ruby memberikan kemudahan untuk kita berbuat demikian.
Dalam Ruby, anda boleh mendapatkan kembali class itu dan mengubahnya. Perubahan ini akan dapat dilihat dalam object-object yang terbina daripada class tersebut.
Dengan menggunakan attr_accessor, kita mendefinasikan dua method baru iaitu name untuk mendapatkan nilai name dan name= untuk memberi nilai kepada variable itu. MegaGreeterGreeter class yang didefinasikan sebelum ini tidak begitu menarik kerana ia hanya dapat memberikan greetings kepada seorang sahaja pada sesuatu masa. Jadi kita akan membina MegaGreeter yang dapat greet lebih ramai orang. Kerana ia agak besar, kita akan menulis definasi class MegaGreeter? ini di dalam satu file. Untuk keluar dari IRB, gunakan arahan exit. Atau dengan combinasi ctrl+d. Gunakan editor anda dan masukkan aturcara Ruby berikut:
Simpan file ini sebagai 20min.rb, dan kita mulakan aplikasi ini dengan menaip 'ruby 20min.rb' di terminal. Output aplikasi ini sepatutnya seperti:
Melihat kepada aplikasi ini, perhatikan pada file 20min.rb ini, ia bermula dengan '#!/usr/bin/env ruby'. Pada kebiasaannya, tanda # adalah untuk komen-komen di dalam aplikasi dan ianya tidak diendahkan oleh Ruby. Tetapi untuk OS Unix dan sepertinya, ia memberi maklumat kepada shell/terminal berkenaan bagaimana file ini akan dijalankan. Selepas itu, komen-komen lain hanyalah untuk kefahaman pembaca coding ini. Method say_hi telahpun berubah. Say hi to everybody
Ia sekarang mencari @names dan membuat pilihan berdasarkan nilai @names itu. Jika ia nil(jangan lupa, ini bermakna tiada nilai), say_hi hanya akan memaparkan 3 titik perpuluhan. Gelung dan RentetanJikalau @names mempunyai method each, ini bermakna ia dapat melalui satu per satu nilai dalam @names dan melakukan fungsi-fungsi yang diaturkan. Jikalau @names tidak mempunyai method each ini, ia akan ditukarkan menjadi string dan greeting biasa akan diberikan. Mari kita lihat rentetan ini dengan lebih mendalam.
each adalah satu method yang menerima satu blok aturcara dan kemudiannya menjalankan blok aturcara tersebut untuk setiap elemen dalam list itu. Kesemua antara do dan end itu adalah satu blok. Blok itu bolehlah kita anggap seperti sebuah function yang tidak diketahui atau istilahnya lambda. Variable diantara huruf pipe '|' adalah parameter untuk blok ini. Apa yang terjadi ialah untuk setiap iterasi, satu nilai dimasukkan ke dalam variable name. Apabila iterasi itu selesai, nilai seterusnya pula diberi kepada variable name itu. Untuk contoh diatas, setiap iterasi akan memaparkan nilai name, jadi semua nilai name itu akan dipaparkan sehingga habis senarai nama dalam @names. Jika anda pernah mengaturcara dalam C, anda mungkin akan membuat aturacara di atas seperti ini:
Ini tidak dianggap kemas kerana ia memerlukan satu variable sementara iaitu i, mendapatkan dan menerangkan bagaimana cara untuk ke iterasi seterusnya. Ruby, bagaimanapun, mengambil pendekatan yang lebih kemas dengan hanya meminta kita memberitahu apa yang hendak dibuat pada setiap nilai yang dilalui. |
Articles New forum topics Recent comments
|