Neden't ben başka bir işlev içinde bir işlev tanımlayabilirsiniz?
Bu lambda fonksiyonu bir soru değil, bir değişken için bir lambda ata biliyorum.
Bize bildirir ancak kod içinde bir işlev tanımlamak için izin vermenin ne anlamı var?
Örneğin:
#include <iostream>
int main()
{
// This is illegal
// int one(int bar) { return 13 bar; }
// This is legal, but why would I want this?
int two(int bar);
// This gets the job done but man it's complicated
class three{
int m_iBar;
public:
three(int bar):m_iBar(13 bar){}
operator int(){return m_iBar;}
};
std::cout << three(42) << '\n';
return 0;
}
Peki ben neden C çok daha karmaşık görünüyor işe yaramaz, ve three
ama izin vermeyecek gibi görünüyor two
izin one
bilmek mi istiyorsunuz?
DÜZENLEME:
Cevapları öyle görünüyor ki orada-kod Bildirgesi-ebilmek muktedir önlemek ad kirliliği, ne istiyordum duymak rağmen neden yeteneğini ilan işlevleri olmuştur izin ama yeteneğini tanımlamak için fonksiyonları olmuştur izin verilmedi.
CEVAP
Cevap "tarihsel nedenler". C blok kapsamı fonksiyon bildirimleri olabilir, ve C tasarımcılar bu seçeneği kaldırarak fayda görmedi.
Örnek bir kullanım şöyle olabilir:
#include <iostream>
int main()
{
int func();
func();
}
int func()
{
std::cout << "Hello\n";
}
IMO, bu kötü bir fikir çünkü bu kolay bir hata ile sağlayan bir beyanname eşleşmiyor işlevin gerçek tanımı, önde gelen tanımlanmamış davranışları olan birisi tarafından teşhis derleyici.
Neden benim değişken sonra tam ben bir...
Arama "yerel" modül içinde f...
Neden Python kodunu daha hızlı bir işl...
Neden İfade<İşlev<T> kullanırs...
Neden herhangi bir parametre (asıl fon...