La boucle "times" de Ruby en C#
2013-02-06 #csharp#ruby
Pour mon billet sur les
boucles en Ruby, j'étais tombé sur une version de l'itérateur
times
de Ruby porté sur C# :
public static class Extensions
{
public static void Times(this int count, Action action)
{
for (int i=0; i < count; i++)
{
action();
}
}
public static void Times(this int count, Action<int> action)
{
for (int i=0; i < count; i++)
{
action(i);
}
}
}
Ça s'utilise aussi simplement que ça :
5.Times(() => Console.WriteLine("Hi"));
5.Times(i => Console.WriteLine("Index: {0}", i));
Source : Any chances to imitate times() Ruby method in C#? et c'est une réponse de Jon Skeet. Le Jon Skeet !
Et maintenant, grâce à cette extension, je peux remplacer ce "vieux" code :
for (int i = 0; i < 5; i++)
{
var fois2 = i + i;
Console.WriteLine(fois2);
}
Par ça :
5.Times(i => {
var fois2 = i + i;
Console.WriteLine(fois2);
});
Pour qu'il ait un meilleur goût de Ruby :
5.times do |i|
fois2 = i + i
puts fois2
end