Instansiasi dan Metode Inisialisasi

01

dari 02

Instansiasi dan Metode Inisialisasi

Belajar Ruby on Rails: Bermain dengan irb
brnzwngs / Flikr / CC BY 2.0

Ketika Anda mendefinisikan kelas di Ruby, Ruby akan menetapkan objek kelas baru ke konstanta nama kelas. Misalnya, jika Anda mengatakannya Orang kelas; akhir, ini kira-kira setara dengan Person = Class.new. Objek kelas ini adalah tipe Kelas, dan memiliki sejumlah metode yang berguna untuk membuat salinan contoh-contoh tersebut.

02

dari 02

Membuat Instances

Untuk membuat instance kelas baru, panggil kelas itu baru metode. Secara default, ini akan mengalokasikan memori yang diperlukan untuk kelas dan mengembalikan referensi ke objek baru. Jadi, jika Anda membuat contoh baru dari Orang kelas, Anda akan menelepon Orang baru.

Meskipun pada awalnya ini agak mundur, tidak ada baru kata kunci dalam Ruby atau sintaks khusus. Objek baru dibuat melalui metode normal yang, semua dikatakan dan dilakukan, melakukan hal-hal yang relatif sederhana.

Inisialisasi Mesin Virtual

Objek kosong tidak terlalu menarik. Untuk mulai menggunakan objek Anda, ia harus diinisialisasi terlebih dahulu (dengan asumsi ia memilikinya

instagram viewer
variabel contoh yang perlu diinisialisasi). Ini dilakukan melalui menginisialisasi metode. Ruby akan memberikan argumen apa pun yang Anda berikan Baru ke menginisialisasi pada objek baru. Anda kemudian dapat menggunakan tugas variabel normal dan metode untuk menginisialisasi keadaan objek. Dalam contoh ini, a Orang kelas disajikan yang menginisialisasi Metode akan mengambil argumen nama dan umur, dan menugaskannya ke variabel instan.

inisialisasi kelas Person def (nama, umur) @ nama, @age = nama, akhir zaman bob = Person.new ('Bob', 34)

Anda juga dapat menggunakan kesempatan ini untuk memperoleh sumber daya apa pun yang mungkin Anda butuhkan. Buka jaringan soket, buka file, baca semua data yang Anda butuhkan, dll. Satu-satunya peringatan adalah bahwa orang umumnya tidak berharap menginisialisasi metode gagal. Pastikan untuk mendokumentasikan semua kemungkinan gagal menginisialisasi metode secara menyeluruh.

Objek Destorying

Secara umum, Anda tidak menghancurkan objek di Ruby. Jika Anda berasal dari C ++ atau bahasa lain tanpa pengumpul sampah, ini mungkin aneh. Namun di Ruby (dan sebagian besar bahasa sampah lainnya), Anda tidak menghancurkan objek, Anda cukup berhenti menyebutnya. Pada siklus pengumpulan sampah berikutnya, benda apa pun yang tidak mengacu padanya akan dihancurkan secara otomatis. Ada beberapa bug dengan referensi melingkar, tetapi secara umum ini berfungsi dengan sempurna dan Anda bahkan tidak memerlukan "destructor."

Jika Anda bertanya-tanya tentang sumber daya, jangan khawatir tentang hal itu. Ketika objek yang memegang sumber daya dihancurkan, sumber daya akan dibebaskan. File yang terbuka dan koneksi jaringan akan ditutup, memori tidak digunakan dll. Hanya jika Anda mengalokasikan sumber daya apa pun dalam ekstensi C Anda benar-benar perlu khawatir tentang deallocating sumber daya. Padahal tidak ada jaminan kapan pengumpul sampah akan dijalankan. Untuk mengalokasikan sumber daya dalam a tepat waktu cara, cobalah untuk membebaskan mereka secara manual.

Membuat Salinan Objek

Ruby lulus dengan referensi. Jika Anda meneruskan referensi ke objek ke metode, dan metode itu memanggil metode yang mengubah keadaan objek itu, konsekuensi yang tidak diinginkan dapat terjadi. Lebih lanjut, metode kemudian dapat menyimpan referensi ke objek untuk dimodifikasi pada waktu yang sangat lama, menyebabkan efek yang tertunda untuk bug. Untuk menghindari ini, Ruby menyediakan beberapa metode untuk menduplikasi objek.

Untuk menduplikasi objek apa pun, cukup panggil some_object.dup metode. Objek baru akan dialokasikan dan semua variabel instance objek akan disalin. Namun, menyalin variabel instan adalah hal yang seharusnya dihindari: inilah yang disebut "salinan dangkal". Jika Anda harus memegang file dalam variabel instan, kedua objek yang digandakan sekarang akan merujuk ke yang sama mengajukan.

Perlu diketahui bahwa salinan tersebut adalah salinan dangkal sebelum menggunakan dup metode. Lihat artikelnya Membuat Salinan Dalam di Ruby untuk informasi lebih lanjut.

instagram story viewer