Merhaba,
Github üzerinde kodları incelerken alias Nullable!byte = Byte; gibi bir tanımlama gördüm. Buradaki Nullable! nedir? Nasıl ve nerelerde kullanılır?
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
January 18, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Merhaba, Github üzerinde kodları incelerken alias Nullable!byte = Byte; gibi bir tanımlama gördüm. Buradaki Nullable! nedir? Nasıl ve nerelerde kullanılır? -- |
January 18, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Posted in reply to zafer | Bazı arayüzlerdeki bazı referansların null olmalarının özel anlam taşımalarını daha güvenli hale getiriyor.
Denetlemezsek program segmentation fault ile sonlanır. Nullable, arayüzde null bulunduğunu daha resmî (formal) hale getiriyor:
Yararları:
Bu kavram bazı programlama dillerinde dil olanağı olarak geliyor. Örneğin, Swift'te kod bloklarının şu nesne null değilse işletilmesi istenebiliyor. Sanırım o dilde optional type deniyor. Ali -- |
January 26, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Anladığım kadarıyla Nullable! sablonu sadece null deger içerebilecek değişkenleri daha net bir şekilde belirtiyor. Ayrıca null değerden dolayı oluşabilecek hatalarda hatayı yakalamamız için bir altyapı sağlıyor. C# dilindede Nullable şablonu var ancak bu şablon aynı zamanda değişkenlere null değer atayabilmeyi sağlıyor. (http://www.javablog.org/136-c-sharp-nullable-types-ve-operatoru)
-- |
January 26, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Posted in reply to zafer | Teşekkürler; öğrenmiş oldum. :) D'de de o amaçla kullanılabiliyormuş:
Ali -- |
January 29, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Rica ederim hepimizin amacı yeni bir şeyler öğrenmek :) D dilindede aynı amaçla kullanılması güzel ancak kullanımı tam anlayamadım. sonuç değişkenine null atamak istediğimde hata aldım. Şu şeklide yaptığımda aşağıdaki hatayı alıyorum.
Alıntı: >Error: inout method std.typecons.Nullable!int.Nullable.this is not callable using a mutable object Bunun özerine değişkeni oluşturduktan sonra değer atamayı denedim ve şöyle yaptım; ancak yine hata aldım. sonuç değişkeninin init özelliğine baktığımda Nullable.null şeklinde bir tanım görüyorum. Acaba hatam nerede yardımcı olabilir misin?
Alıntı: >Error: template std.typecons.Nullable!int.Nullable.opAssign cannot deduce function from argument types !()(typeof(null)), candidates are: -- |
January 29, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Anladığm kadarıyla Nullable!int türünde bir değişkene direk null ataması yapamıyoruz bunun yerine değişkenin nulify() işlevini çağırmak gerekiyor. Eğer null değeri mutlaka kullanmak istersek, Nullable! şablonunu bu sefer bir tip ile değil bir gösterici ile çağırmamız gerekiyor. Teşekkürler. -- |
January 29, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Posted in reply to zafer | Bunun için özel bir işlevi varmış:
Düşününce mantıklı: bazı durumlarda 'null' bile geçerli bir dönüş değeri olabilir. Yani, Nullable sonucun geçersiz olduğunu belirttiğine göre, 'null' değerini bile taşıyabilmeli. Örneğin, 'null' Nullable!(int*) gibi bir tür için geçerli bir değer olabilir:
Çok kafa karıştırıcı. Özellikle 'isNull' üye işlevi ile 'is null'ın farklı anlam taşımaları... :) Ali -- |
January 30, 2016 Nullable! nedir? | ||||
---|---|---|---|---|
| ||||
Posted in reply to zafer | Alıntı (zafer): >Eğer null değeri mutlaka kullanmak istersek, Nullable! şablonunu bu sefer bir tip ile değil bir gösterici ile çağırmamız gerekiyor. Hepsine katılıyorum ama şöyle değiştirebiliriz: Atama işlemi, Nullable nesnesinin geçerli olduğunu ve atanmakta olan değeri taşıdığını belirliyor. Dolayısıyla, nesneye null atamak da aynı kurala uyuyor. O yüzden, Nullable'ı geçersiz yapmanın tek yolu nullify(). Ali -- |