Eğer bir IEnumerator değişkeni varsa, onu alan bir lambda fonksiyonuna sahip olmak mümkün, MoveNext() ile onu ilerletir ve her seferinde geçerli değeri döndürür.Bir numaralayıcıyı ilerletmek ve değerini bir lambda almak mümkün mü?
1
A
cevap
4
e => e.MoveNext() ? e.Current : null
Bu numaralandırıcıyı ilerletmek ve mevcut değer döndürmek ve numaralandırma işlemi tamamlandığında null adlı dönecektir.
1
A Lambda ifadesi karmaşık ifadeler içerebilir, bu nedenle aşağıdakileri yapabilirsiniz:
Func<IEnumerator, object> f = ie => { ie.MoveNext(); return ie.Current; };
0
Bu sizin için mi arıyorsunuz?
List<string> strings = new List<string>()
{
"Hello", "I", "am", "a", "list", "of", "strings."
};
IEnumerator<string> e = strings.GetEnumerator();
Func<string> f =() => e.MoveNext() ? e.Current : null;
for (; ;)
{
string str = f();
if (str == null)
break;
Console.Write(str + " ");
}
bir IEnumerator
noktası zaten başa sözdizimsel şeker olsun şudur:
foreach (string str in strings)
Console.Write(str + " ");
bile numaralayıcı doğrudan bu durumda daha temiz görünüyor taşıma:
while (e.MoveNext())
Console.Write(e.Current + " ");
0
genişletme Abe çözümüne ilişkin olarak, numaralandırıcıya bir başvuru tutmak için kapatma noktalarını da kullanabilirsiniz:
var iter = ((IEnumerable<char>)"hello").GetEnumerator();
//with closure
{
Func<object> f =
() =>
{
iter.MoveNext();
return iter.Current;
};
Console.WriteLine(f());
Console.WriteLine(f());
}
//without closure
{
Func<IEnumerator, object> f =
ie =>
{
ie.MoveNext();
return ie.Current;
};
Console.WriteLine(f(iter));
Console.WriteLine(f(iter));
}
İlgili konular
- 1. Bir WDFREQUEST oluşturan CPU'yu almak mümkün mü?
- 2. XPath 1.0'da bir özniteliğin değerini ve düğüm içindeki metni aynı anda almak mümkün mü?
- 3. AngularJS'de sertifika almak mümkün mü?
- 4. farklı sonuçlar almak mümkün mü?
- 5. clojure.test'in çıktısını almak mümkün mü?
- 6. RSS arşivini almak mümkün mü
- 7. jQuery'de bir öğeye bağlı olayların bir listesini almak mümkün mü?
- 8. Uzak bir resmin bir bölümünü javascript içine almak mümkün mü?
- 9. Bir veritabanına bağlantı olmadan bir MetadataWorkspace almak mümkün mü?
- 10. Bir AWS Lambda işlevini yeniden adlandırmak mümkün mü?
- 11. C# içinde genel bir lambda tanımlamak mümkün mü?
- 12. Şablon parametresi için bir lambda işlevi kullanmak mümkün mü?
- 13. statik değişkeni lambda ile başlatmak mümkün mü?
- 14. Bir lambda sözlük varsayılan olarak kullanmak mümkün mü?
- 15. Haskell Tür Tip Oluşturucu almak mümkün mü?
- 16. Javascript'te bir css3 geçişi sırasında hedef css özellik değerini almak mümkün mü?
- 17. Bir Lambda işlevinden bir HTTP isteği yapmak ve başka birindeki yanıtı işlemek mümkün mü?
- 18. İşlev parametresinin değerini değiştirmek mümkün mü?
- 19. Javascript kullanarak bir dosyanın son değiştirilme tarihini almak mümkün mü?
- 20. Bir Keychain öğesinin kSecAttrAccessible değerini güncellemek mümkün mü?
- 21. RabbitMQ, FIFO'yu korurken bir kanaldan 1 mesaj almak mümkün mü?
- 22. Dönüş değeri kullanılmazsa bir uyarı almak mümkün mü?
- 23. VBScript'te bir .Net string nesnesi örneği almak mümkün mü?
- 24. Bir WPF Popup kontrolünün Hwnd'ini almak mümkün mü?
- 25. objectId'yi bilmeden parse.com'dan bir kayıt almak mümkün mü
- 26. Python'da bir anahtar kelime listesi almak mümkün mü?
- 27. Tek bir sonucu toplu olarak almak mümkün mü?
- 28. Epilogu kullanarak, bir kaynağı ilişkilendirmeden geri almak mümkün mü?
- 29. ioreg'in çıktısını daha kolay ayrıştırılabilir bir biçimde almak mümkün mü?
- 30. PHP'deki asılsız bir nesneden geçerli sınıfın adını almak mümkün mü?