Ruby kháng nghị vì nó thường cho phép tôi làm những gì tôi muốn hoàn thành, thay vì dành nhiều thời gian "thiết lập" giải pháp. Vì vậy, một vài ví dụ:
Sum những con số không âm trong mảng [-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 }
So với một hình thức phổ biến sang các ngôn ngữ khác:
sum = 0;
foreach (x in [-1, 3, -10, 0, 5, 8, 16, -3.14159]) {
if(x > 0) sum += x;
}
return x;
xử lý ngoại lệ đơn giản
x = method_that_might_raise_exception() rescue nil
So với:
try {
x = method_that_might_raise_exception()
} catch (Exception) {
x = nil
}
Cấp, bạn có thể muốn làm nhiều hơn với trường hợp ngoại lệ được ném ra, và Ruby cho phép bạn, nhưng khi bạn muốn giữ cho mọi thứ đơn giản, Ruby không đứng trong đường đi.
lớp mở của Ruby là một chủ đề gọn gàng, mặc dù họ có thể bị lạm dụng:
class Array
def sum_of_squares
map { |x| x * x }.inject { |acc, x| acc + x }
end
end
[1, 3, 5, 9].sum_of_squares
Ngoài ra còn có các chủ đề phong phú của meta-lập trình, nhưng điều đó có thể là quá nhiều cho một giới thiệu về Ruby? Tôi hy vọng một cái gì đó ở đây là hữu ích cho bạn, và tôi muốn tình cảm của graffic thứ hai.
Ví dụ này quá phức tạp. Nó phải bao gồm tối đa. 4-5 dòng. – brainfck
Tôi thích cách thức, về cơ bản mọi hướng dẫn Ruby mà không có ngoại lệ, bạn gần như có thể cảm thấy những tua của sự điên rồ vươn ra để kéo người đọc vào cơn ác mộng tâm thần phân liệt của tác giả. – Juliet
@Julet: Rõ ràng bạn chỉ đọc hướng dẫn được viết hoặc truyền cảm hứng bởi _why. – Pesto