Merhaba,
Belki bu, ustalar için şaşırtıcı değildir ama olayı kavramamda yardımcı olursanız benim için büyük bir adım olacak. Şimdiden teşekkürler...
Aşağıdaki kodda tek yönlü (get'li) bir kapsülleme yaptım. Eğer auto
kullanmaya devam edersem hiçbir 'undefined ' hatası almıyoruz; ver.1 için konuşuyorum çünkü diğerinde yapıyı sınıf dışına alıyoruz. Soru geliyor... 😀
Nasıl olur da main(), Point'den haberdar değilken, auto'lar ile sınıf tanımlandıktan sonra sanki ver.2'miş gibi program derlenebiliyor?
Ya da sanki Point türünde global bir değişkenmiş gibi onunla işlem yapabiliyorum? Bu nasıl olur, beklenmedik bir durum, auto type sızması değil de nedir!
class Foo { // ver.1
struct Point
{
int x, y;
}
//class Foo { // ver.2
Point bar;
this()
{
bar = Point(10, 20);
}
Point get()
{
return bar;
}
}
void main()
{
auto foo = new Foo();
auto point = foo.get;
point.x++;
int normal_mi = point.x + 30;
assert(normal_mi == 41);
}