, böylece gibi bir şey yazabilirsiniz ... küme parantezleri tüm ifadeleri yürütülmesi ve son değer dönen varsayılan davranışı vardı bir derleyici yazdı C# ile eşdeğer bir şey? Örneğin, bir yan etkiye sahip bir lambda fonksiyonu yazmak istersem. lambda yan etkisi (sadece bir örnektir) bu işlevselliği varsa, daha ... lisp örneğin, sen prognC okula içerisinde kapsam operatörü
cevap
olmalı, Vlad dan yanıt doğru ve siz lamda işlev bildirmek gerekmez önceden bir delege. derleyici sözdizimsel lambda ifade bir temsilci (örn Func<int>
) ya da bir ifade ağacı (örn Expression<Func<int>>
) olarak derlenmiş ve ayrıca gerekip gerekmediğini karar veremez çünkü hariç
int foo = new Func<int>(() => {
Console.WriteLine("bar"); return 1; })();
: Yani, temsilci oluşturmanız gerekir
static Func<R> Scope<R>(Func<R> f) { return f; }
// Compiler automatically compiles lambda function
// as delegate and infers the type arguments of 'Scope'
int foo = Scope(() => { Console.WriteLine("bar"); return 1; })();
Bunun, :-) kullanılmaması gereken çirkin bir hile olduğunu kabul ediyorum, ancak bunun yapılması ilginç bir gerçektir!
sahip yan etkileri bulunduğu bilinen alıkoyan şey yok hakkında olmanın
nokta az
bir lambda ifadesi.Func<int> expr =() =>
{
Console.WriteLine("bar");
return 1;
};
int foo = expr();
İsimsiz bir işlevden bahsediyorsunuz: http://msdn.microsoft.com/en-us/library/bb882516.aspx, bence.
int foo = (() => { printf("bar"); return 1; })();
Düzenleme: yapıcı eleştiri için teşekkürler, bu Prensip olarak
int i = ((Func<int>)(() => { printf("bar"); return 1; }))();
Bir lambda tanımı için ()=>{M();}
'dan bile daha kısa bir sözdizimi yapmayı düşündük, ancak her ikisi de güzel okuyan ve bloklarla, toplama/nesne başlatıcılarıyla kolayca karıştırılmayan bir sözdizimi bulmayı başaramamıştık veya dizi başlatıcıları. Şimdilik lambda sözdizimi ile sıkıştın.
- 1. C++ 0x decltype ve kapsam çözünürlük operatörü
- 2. C++ operatörü ":?"
- 3. C# modülü operatörü
- 4. C++ 17 operatörü "" s?
- 5. C++ 11 operatörü ""
- 6. kapsam
- 7. Çoklu nokta operatörü (C++ sınıfı)
- 8. C# lojik AND operatörü '&' mantığı
- 9. neden tercih ediyoruz? ?? C# operatörü?
- 10. İndirme operatörü nasıl yüklenir? (C++)
- 11. içerisinde sıralama öğe
- 12. İçerisinde EditText'i kaydırmak ScrollView
- 13. OrderBy ThenBy F içerisinde
- 14. C++ Forward declaring sınıf kapsam numaralı numaralandırma
- 15. C++: Neden bu basit Kapsam Muhafızı çalışıyor?
- 16. Neden C# destek operatörü aşırı yükleme yapmıyor?
- 17. C++ yerine operatörün) operatörü İnt (kullanarak +
- 18. C++ ve dereference'de aşırı yükleme operatörü
- 19. C++: "Açık" bir görevlendirme operatörü yapabilirim "
- 20. C#: Shift sol atama operatörü davranış
- 21. Burada C++ operatörü aşırı yükleniyor mu?
- 22. C++ şablon operatörü eşleşme olarak bulunamadı
- 23. Neden (**) operatörü
- 24. Geri Döndürme Gövdesini ActionFilter İçerisinde
- 25. UIPageViewController İçerisinde UITextview Uygulanamaz mı?
- 26. ACF in functions.php (WordPress) İçerisinde
- 27. Açısal - değişkene kapsam değerini kaydetmek, ancak kapsam
- 28. böyle üçlü operatörü kullanmak istediğiniz üçlü operatörü
- 29. Scala ~> operatörü
- 30. VEYA operatörü filtrede()?
Doğru cevap bu - dedi, bunu ciddi olarak düşünmüyor. –
Siz, oylamadan önce kodun derlenip derlenmediğini gerçekten kontrol etmek isteyebilirsiniz. Bu yapmaz. -1. – Aaronaught
Evet, evet, printf, C# içinde yok. Ama cevap bununla ilgili değil. – Vlad