Forum: Ders Arası RSS
işlev = değer
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: işlev = değer
void foo(int i)
{}
 
void main()
{
    foo = 42;
}
Yukarıdaki kod derleniyor. Nasıl yani? :) Evet, foo(42) olarak derleniyor.

Bu, nesnelerin nitelik olanağının beklenmedik etkisiymiş. Orada da üye işlevlere değer atayabiliyoruz ve aslında işlevi o değerle çağırmış oluyoruz:
struct S
{
    void üye(int değer)
    {}
}
 
void main()
{
    auto s = S();
    s.üye = 42;    // s.üye(42)'nin eşdeğeri
}
Ali
Avatar
zekeriyadurmus #2
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yani eşitlik yaptığımız zaman fonksiyonu çağırmaktan farkı olmuyor?
Bilgi meraktan gelir...
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet.

Bu, text = foo yapan birisinin başına gelmiş. text diye bir değişken tanımladığını sanıyor ama aslında tanımlamayı unutmuş. Buna rağmen kod derleniyor çünkü std.conv modülü programa eklenmiş durumda ve onun içinde text() diye bir işlev var. :)

Ali
Avatar
Salih Dinçer #4
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
İşlev olduğunu bildiğimiz müddetçe sorun yok ve sanki güzel bir esneklik, ne dersiniz?

Hatta parantez aç/kapadan daha az zahmetli. Sonuçta 2 karakter yerine tek eşittir karakteri ile netice alıyoruz. Ama kod okumayı zorlaştırabilir ya da birden fazla parametre verilemeyecektir. Yoksa şu kaldırılması düşünülen virgül olanağı burada çalışır mı? En kısa zamanda denemek iyi fikir olabilir :)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Hatta parantez aç/kapadan daha az zahmetli.

Doğru.

Ama kod okumayı zorlaştırabilir

Bu kod, dlang.org forumlarında birisinin kodunda belirmişti. Programcı tanımladığını düşündüğü bir değişkene (örneğin, buradaki foo gibi) atadığını sanıyordu ama tesadüfen bir Phobos işlevinin ismini seçtiği için kod sessizce Phobos işlevini çağırıyordu.

ya da birden fazla parametre verilemeyecektir.

Evet, o bu durumda şart. İki parametre olsa olmaz.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 00:34:35 (UTC -08:00)