Örnekleme ve Başlatma Yöntemi

01

02

Örnekleme ve Başlatma Yöntemi

Ruby on Rails'i Öğrenmek: irb ile oynamak
brnzwngs / Flikr / CC BY 2.0

Ruby'de bir sınıf tanımladığınızda, Ruby yeni bir sınıf nesnesi atar. sınıf adı sabiti. Örneğin, sınıf kişisi; son, bu kabaca Kişi = Sınıf. Yeni. Bu sınıf nesnesi türündedir Sınıfve bu örneklerin kopyalarını oluşturmak için bir dizi yöntemi barındırır.

02

02

Örnekler Oluşturma

Bir sınıfın yeni bir örneğini oluşturmak için o sınıfın yeni yöntem. Varsayılan olarak, bu sınıf için gerekli belleği tahsis eder ve yeni nesneye bir başvuru döndürür. Yani, yeni bir Kişi dersiniz, Person.new.

İlk başta bu biraz geriye doğru görünse de, yeni anahtar kelime veya herhangi bir özel sözdizimi. Yeni nesneler, tüm söylenen ve yapılan, nispeten basit şeyler yapan normal bir yöntemle oluşturulur.

Örnekleri Başlatma

Boş bir nesne çok heyecan verici değildir. Nesnenizi kullanmaya başlamak için, öncelikle (varsa, örnek değişkenler başlatılması gerekir). Bu, ilklendir yöntem. Ruby geçtiğiniz argümanları iletecek SomeClass.new tarihinde ilklendir yeni nesnede. Daha sonra nesnenin durumunu başlatmak için normal değişken atamalarını ve yöntemlerini kullanabilirsiniz. Bu örnekte,

instagram viewer
Kişi kimin olduğu ilklendir yöntemi bir ad ve yaş bağımsız değişkeni alır ve bunları örnek değişkenlerine atar.

sınıf Kişi def başlangıcı (isim, yaş) @name, @age = isim, yaş sonu sonu bob = Kişi.yeni ('Bob', 34)

Bu fırsatı, ihtiyacınız olabilecek kaynakları elde etmek için de kullanabilirsiniz. Açık ağ prizler, dosyaları açın, ihtiyacınız olan tüm verileri okuyun vb. Tek uyarı, insanların genellikle beklemediği ilklendir başarısız olma yöntemleri. Başarısız olabilecek herhangi bir belgeyi belgelediğinizden emin olun ilklendir yöntemleri.

Destorying Nesneleri

Genel olarak, Ruby'deki nesneleri yok etmezsiniz. C ++ 'dan veya çöp toplayıcısız başka bir dilden geliyorsanız, bu garip görünebilir. Ancak Ruby'de (ve diğer çöp toplanan dillerin çoğunda), nesneleri yok etmezsiniz, sadece ona atıfta bulunmayı bırakırsınız. Bir sonraki çöp toplama döngüsünde, ona atıfta bulunan hiçbir şey olmayan herhangi bir nesne otomatik olarak imha edilecektir. Dairesel referanslara sahip bazı hatalar var, ancak genel olarak bu kusursuz bir şekilde çalışıyor ve bir "yıkıcıya" bile ihtiyacınız yok.

Kaynakları merak ediyorsanız, endişelenmeyin. Kaynağı tutan nesne yok edildiğinde, kaynak serbest bırakılır. Açık dosyalar ve ağ bağlantıları kapatılacak, bellek ayrılacaktır vb. Yalnızca bir C uzantısında herhangi bir kaynak ayırırsanız, kaynakların yeniden konumlandırılması konusunda endişelenmeniz gerekir. Çöp toplayıcının ne zaman çalıştırılacağının garantisi yoktur. Kaynakları bir vakitli el ile serbest bırakmaya çalışın.

Nesnelerin Kopyalarını Çıkarma

Ruby referansla geçer. Bir nesneye bir referansı bir nesneye yöntemve bu yöntem, söz konusu nesnenin durumunu değiştiren bir yöntem çağırır, istenmeyen sonuçlar oluşabilir. Ayrıca, yöntemler daha sonra daha sonra değiştirilmek üzere nesneye yapılan referansı kaydederek hata için gecikmiş bir etkiye neden olabilir. Bundan kaçınmak için Ruby, nesneleri çoğaltmak için bazı yöntemler sunar.

Herhangi bir nesneyi çoğaltmak için some_object.dup yöntem. Yeni bir nesne tahsis edilecek ve nesnenin tüm örnek değişkenleri kopyalanacaktır. Bununla birlikte, örnek değişkenleri kopyalamak bundan kaçınmak istendi: buna "sığ kopya" denir. Eğer bir örnek değişkeninde bir dosya tutardınız, çoğaltılmış nesnelerin her ikisi de şimdi aynı dosya.

Kullanmadan önce kopyaların sığ kopyalar olduğunu unutmayın. dup yöntem. Makaleye bakın Ruby'de Derin Kopyalar Yapma daha fazla bilgi için.