|
> C#だったら、ともかくForeEachを持ったクラスを作らないといけないわけですね。継承なり自作なりして。
> 勝手にSystem.Collections.Generic.List<T>やSystem.Arrayにメソッドを追加することはできないわけですし。
C# 3.0 ならば拡張メソッド使えば出来ますよ。
public static class Extension
{
public static void ForEach(this int[] numbers, Action<int> action)
{
Array.ForEach<int>(numbers, action);
}
public static int[][] Power(this int[] source)
{
List<int[]> ret = new List<int[]>();
int limit = (int) Math.Pow(2, source.Length);
for (int n = 0; n < limit; n++)
{
int m = n;
List<int> a = new List<int>();
source.ForEach(i =>
{
if ((m & 1) == 1)
{
a.Add(i);
}
m >>= 1;
});
ret.Add(a.ToArray<int>());
}
return ret.ToArray<int[]>();
}
}
極力似せるとするとこんな感じでしょうか?
Power メソッドだけがほしいなら ForEach メソッドを拡張する必要はありませんが念のため。
|