Мне нравится Ruby, потому что он часто позволяет мне делать то, что я хочу, вместо того, чтобы тратить много времени на «настройку» решения. Итак, несколько примеров:
Сумма неотрицательных чисел в массиве [-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 }
По сравнению с формой, общей для других языков:
sum = 0;
foreach (x in [-1, 3, -10, 0, 5, 8, 16, -3.14159]) {
if(x > 0) sum += x;
}
return x;
Простая обработка исключений
x = method_that_might_raise_exception() rescue nil
По сравнению с:
try {
x = method_that_might_raise_exception()
} catch (Exception) {
x = nil
}
Конечно, вы можете захотеть сделать больше с исключениями, которые выдают, и Ruby позволяет вам, но если вы хотите, чтобы все было просто, Ruby не мешает.
Открытые классы Ruby - интересная тема, хотя ими можно злоупотреблять:
class Array
def sum_of_squares
map { |x| x * x }.inject { |acc, x| acc + x }
end
end
[1, 3, 5, 9].sum_of_squares
Существует также богатая тема метапрограммирования, но это может быть слишком много для введения в Ruby? Я надеюсь, что что-то здесь было полезно для вас, и я хотел бы поддержать мнение Графика.