Rubino piace a me perché spesso mi permette di ottenere fare quello che voglio ottenere fatto, piuttosto che spendere una grande quantità di tempo "impostare" la soluzione. Così, alcuni esempi:
sommare i numeri non negativi nell'array [-1, 3, -10, 0, 5, 8, 16, -3,14159]
[-1, 3, -10, 0, 5, 8, 16, -3.14159].select { |x| x > 0 }.inject { |acc, x| acc + x }
Rispetto alle un modulo comune per altre lingue:
sum = 0;
foreach (x in [-1, 3, -10, 0, 5, 8, 16, -3.14159]) {
if(x > 0) sum += x;
}
return x;
semplice la gestione delle eccezioni
x = method_that_might_raise_exception() rescue nil
Rispetto a:
try {
x = method_that_might_raise_exception()
} catch (Exception) {
x = nil
}
Certo, si può decidere di fare di più con le eccezioni che vengono gettati, e Ruby si permette, ma quando si vuole mantenere le cose semplici, Ruby non ostacolare.
classi aperte di Ruby sono un tema pulito, anche se possono essere oggetto di abusi:
class Array
def sum_of_squares
map { |x| x * x }.inject { |acc, x| acc + x }
end
end
[1, 3, 5, 9].sum_of_squares
C'è anche la ricca tema della meta-programmazione, ma che potrebbe essere troppo per un'introduzione a Ruby? Spero che qualcosa qui ti sia stato utile, e mi piacerebbe mettere in secondo piano il sentimento di Graffic.
Questo esempio è troppo complesso. Dovrebbe essere composto da max. 4-5 linee. – brainfck
Mi piace come, in pratica ogni tutorial di Ruby, senza eccezioni, puoi quasi sentire i tentacoli della follia protendersi per trascinare il lettore nell'incubo schizofrenico dell'autore. – Juliet
@Julet: Chiaramente hai letto solo tutorial scritti o ispirati da _why. – Pesto