2010-11-18 16 views
3

Subj uygulanacak olup olmadığını bilen var mı? En azından, onlar için otomatik depolama sınıfı? Teşekkürler!D iç içe geçmiş işlevler tür çıkarımı

+2

Lütfen daha spesifik olun. Subj ile ne demek istiyorsun? –

+0

Bu yapıyı kastediyorum. void foo() {auto bar() {dönüş 3.14; }; bar, otomatik depolama sınıfına sahip olamayacağından derlenmez. En azından böyle bir geliştirmenin planlanıp tasarlanmadığını merak ettim. –

cevap

4

genel olarak oto fonksiyonları ile çeşitli sorun vardır, bu yüzden çok iyi nedeniyle otomatik ziyade tasarlanmış gibi olmak bir hata

void main() 
{ 
    auto bar() { return "hello world"; } 

    writeln(bar()); 
} 

yapamam olabilir. Bunun için kesin planların ne olduğundan emin değilim, ancak 'u düşünürken, otomatik olarak iç içe geçmiş bir fonksiyonun dönüş tipi olarak kullanabileceğinizi düşünürdüm. Her iki durumda da bir enhancement request var.

Ancak ne olursa olsun oto iç içe fonksiyonları ile çalışır olsun, sen benzer bir şekilde bir temsilci bildirebilirsiniz:

void main() 
{ 
    auto bar =() { return "hello world"; }; 

    writeln(bar()); 
} 

Yani, temel işlevi hala orada, hatta tam sözdizimi ondan eğer arıyordu şu anda çalışmıyor.

+0

Doğru anlıyorsam, temsilci veya anahtar kelime işlevi gerekli değil mi? –

+0

Bu 'const bar = =' olması daha iyi olabilir, böylece WRT değerlerini gerçek bir işlev gibi işler. – BCS

+0

@ Target-san Eğer bir lambda fonksiyonunun biri veya diğeri olmasını zorlamak istiyorsanız, sadece fonksiyonu veya delege anahtar sözcüğünü kullanırsınız ve genellikle ihtiyaç yoktur. –