私はIEnumerator変数を持っている場合、それを取るラムダ関数を持つことは可能ですが、MoveNext()で進めて、呼び出されるたびに現在の値を返しますか?列挙子を進めてラムダでその値を取得することは可能ですか?
1
A
答えて
4
e => e.MoveNext() ? e.Current : null
これは、列挙子を進め、現在の値を返し、列挙が完了したときにはnullを返します。
1
Aラムダ式は、複雑な文を含めることができますので、あなたは、次の操作を行うことができます
Func<IEnumerator, object> f = ie => { ie.MoveNext(); return ie.Current; };
0
これはあなたの探しているものですか?
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 + " ");
}
IEnumerator
のポイントは、あなたはすでにそれに対処するためのシンタックスシュガーを得ることです:
while (e.MoveNext())
Console.Write(e.Current + " ");
0
拡張:
foreach (string str in strings)
Console.Write(str + " ");
はでも、直接このような場合にはクリーナーに見える列挙子を扱いますAbeのソリューションでは、クロージャを使用して列挙子への参照を保持することもできます。
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));
}
関連する問題
- 1. Dの列挙型のメンバーの名前と値を取得することは可能ですか?
- 2. 列挙型のToStringの値を保証することは可能ですか?
- 3. 実行時にラムダ式を取得することは可能ですか?
- 4. 利用可能なすべてのDDEサーバーを `TDdeClientConv`クラスで列挙することは可能ですか?
- 5. CPTBarPlotのチップポイント値(CGPoint値)を取得することは可能ですか?
- 6. デッドロックスレッドを進めることは可能ですか? WaitForSingleObjectでスタックする
- 7. 子プロセスが兄弟のPIDを取得することは可能ですか?
- 8. このラムダ式は可能ですか?
- 9. IDでミップマップイメージを取得することは可能ですか?
- 10. ラムダ式を模擬することは可能ですか?
- 11. 固定されていない列挙子の範囲を知ることは可能ですか?
- 12. module.configのパラメータを取得することは可能ですか?
- 13. 配列から値を取得してajaxにデータ名を割り当てることは可能ですか?
- 14. extjs 4で列ヘッダーテキストを取得することは可能ですか?
- 15. startDate datetimepicker jqueryの値を取得することは可能ですか?
- 16. 行列の行の参照を取得することは可能ですか?
- 17. 電子プッシュを電子アプリで受け取ることは可能ですか?
- 18. ラムダ内の可変数のパラメータをキャプチャすることは可能ですか?
- 19. 高速列挙型でキャストすることは可能ですか?
- 20. メインスレッドのスレッドオブジェクトを取得することは可能ですか?それと `join()`はできますか?
- 21. ジャクソンで入れ子の子のJsonRootNameを取得することは可能ですか?
- 22. Composerで取得/配布することは可能ですか?
- 23. クラスのすべてのサブクラスを取得することは可能ですか?
- 24. これは、uitableViewのFacebook Newsfeedを取得することは可能ですか?
- 25. MySQLは:それは可能それらの値を選択することで
- 26. MACアドレスを使って電子機器のジオロケーション座標を取得することは可能ですか?
- 27. indexOfを使用してセレクタを取得することは可能ですか?
- 28. Kindleの火災では、ユーザーの電子メールアドレスを取得することは可能ですか?
- 29. これはSHARE .lnkターゲットを取得することは可能ですか?
- 30. ENUM(とその可能な値)を含むすべての列名と型を取得する方法