É difícil achar alguém que não goste da sintaxe do Ruby, é simples e agradável, tanto para ler quanto para escrever. Muitas vezes as instruções se tornam verdadeiras frases e parece que você está lendo um artigo e não um código. Olha como fica um loop em Ruby.
5.times { puts "Hi" }
“5 vezes imprima Hi”. O melhor de tudo é que é possível termos algo muito semelhante em C#, fica assim.
//New Style
5.Times((i) => {
Console.WriteLine(i);
});
//Old Style
for(int i = 0; i < 5; i++) {
Console.WriteLine(i);
}
Ok, um pouco mais verboso que o exemplo em Ruby, mas ainda assim é muito agradável. Para conseguirmos usar o exemplo acima é preciso incluir este pequeno extension method.
public static void Times(this int times, Action<int> action)
{
for (int i = 0; i < times; i++)
action(i);
}
Extension Methods, adoro :)
São várias as possibilidades de extensão, basta usar a criatividade.
//Loop de 5 até 10
5.To(10, (i) => {
Console.WriteLine(i);
});
//string.IsNullOrEmpty() é chato demais, que tal isso?
string nome = "Guilherme";
if (nome.IsNullOrEmpty()) {
Console.WriteLine("Nome está vazio");
}
//3.Minutes(), 10.Seconds(), 2.Hours(). nuff said
Thread.Sleep(3.Minutes());
A implementação fica assim.
public static bool IsNullOrEmpty(this string value)
{
return string.IsNullOrEmpty(value);
}
public static void To(this int start, int end, Action<int> action)
{
for (int i = start; i <= end; i++)
action(i);
}
public static TimeSpan Minutes(this int minutes)
{
return TimeSpan.FromMinutes(minutes);
}
public static TimeSpan Hours(this int hours)
{
return TimeSpan.FromHours(hours);
}
public static TimeSpan Minutes(this int seconds)
{
return TimeSpan.FromSeconds(seconds);
}
Dica: Quer conhecer uma infinidade de métodos legais e criativos? Este tópico no StackOverflow posusi vários métodos enviados pela comunidade. Escolhas os que mais lhe agradam. Tem também o projeto Fluent DateTime no CodePlex, pode ser útil para aqueles que precisam utilizar datas.