Rubí me atrae porque a menudo me permite conseguir hacer lo que quiero hacer, en lugar de gastar una gran cantidad de tiempo "configurar" la solución. Así, algunos ejemplos:
Sum los números no negativos de la matriz [-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 }
En comparación con una forma común a otros idiomas:
sum = 0;
foreach (x in [-1, 3, -10, 0, 5, 8, 16, -3.14159]) {
if(x > 0) sum += x;
}
return x;
simple manejo de excepciones
x = method_that_might_raise_exception() rescue nil
En comparación con:
try {
x = method_that_might_raise_exception()
} catch (Exception) {
x = nil
}
Por supuesto, es posible que desee hacer más con las excepciones que se tiran, y Ruby le permite, pero cuando se quiere mantener las cosas simples, Ruby no se interpone en el camino.
clases abiertas de Ruby son un tema limpio, a pesar de que pueden ser objeto de abuso:
class Array
def sum_of_squares
map { |x| x * x }.inject { |acc, x| acc + x }
end
end
[1, 3, 5, 9].sum_of_squares
También está el tema de la rica meta-programación, pero que podría ser demasiado para una introducción a Ruby? Espero que algo aquí sea útil para ti, y me gustaría destacar el sentimiento de Graffic.
Este ejemplo es demasiado complejo. Debe consistir en max. 4-5 líneas – brainfck
Me gusta cómo, en casi todos los tutoriales de Ruby sin excepción, casi se puede sentir que los tentáculos de la locura se extienden para llevar al lector a la pesadilla esquizofrénica del autor. – Juliet
@Julet: Claramente solo has leído tutoriales escritos o inspirados por _why. – Pesto