Forum: Ders Arası RSS
Nested Structs
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Nested Structs
Merhaba,

Biraz aptalca olacak ama, unutmuş olabileceğim bilgilerin tekrarını yaparak şunu anlayamadığımı fark ettim:
import std.stdio;
 
struct S{
  int i;
  S s();
}
 
void main(){
  S test;
  test.writeln; // S(0)
  test.i = 1;
  /* DERLENEMEYEN test.s = new S(2); SATIR */
  test.writeln; // S(1)
}
Sanırım S'in içindeki s(), aslında S döndüren bir işlev öyle mi? Peki o satırın başına static koyduğumuzda (ve tabi parantezleri kaldırdığımızda) ne oluyor? Yani şöyle:
import std.stdio;
 
struct S{
  int i;
  
  struct foo {
    int i;
  }
 
  static S f;
}
 
void main(){
  S test;
  test.writeln; // S(0)
  test.i = 1;
  test.f.i = 2;
  test.writeln; // S(1)
}
Teşekkürler...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #2
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:
Sanırım S'in içindeki s(), aslında S döndüren bir işlev öyle mi?

Evet. İşleve değer atayamadığımız için de derlenemiyor.

Peki o satırın başına static koyduğumuzda

Oradaki static'in anlamı o türün bütün işlevleri tarafından paylaşılan anlamına geliyor.

  static S f;

Bu türün sıfır veya daha fazla sayıdaki nesnelerine ek olarak tek adet S.f adında bir S nesnesi daha var.

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-19, 05:54:29 (UTC -08:00)