RubyのCycle
ネットを見ていて、true, false, true...と繰り返すコードについての話題があり、そこでRubyにcycleなるものがあることを知りました。Rubyに対するアンテナが低くて・・・(^^;
C#のEnumerableクラスには同様のものはありませんが、自分で書くとこんな感じでしょうか?
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sample { static class Program { public static IEnumerable<T> Cycle<T> (this IEnumerable<T> e) { while (e.AsEnumerable().Any()) foreach (var v in e.AsEnumerable()) yield return v; } static void Main (string args) { // 空の配列に対しては何もしない foreach (var t in new bool[0].Cycle ()) Console.WriteLine (t); // Ture False True ... foreach (var t in new { true,false }.Cycle ()) Console.WriteLine (t); } } } /* 結果 True False True ... */
あまり出番は無さそうですが、ちょっと面白かったので。