Hãy nói rằng tôi có một hàmcủa Ruby Enumerable đồ Hiểu # (với các khối phức tạp hơn)
def odd_or_even n
if n%2 == 0
return :even
else
return :odd
end
end
Và tôi đã có một mảng đếm đơn giản
simple = [1,2,3,4,5]
Và tôi chạy nó thông qua bản đồ, với tôi chức năng, sử dụng khối do-end:
simple.map do
|n| odd_or_even(n)
end
# => [:odd,:even,:odd,:even,:odd]
Làm cách nào để xác định hàm này ngay từ đầu? Ví dụ:
# does not work
simple.map do |n|
if n%2 == 0
return :even
else
return :odd
end
end
# Desired result:
# => [:odd,:even,:odd,:even,:odd]
không hợp lệ, và trình biên dịch tức giận với tôi vì thậm chí còn nghĩ về nó. Nhưng làm thế nào tôi sẽ thực hiện một loại tương đương của điều, mà hoạt động?
chỉnh sửa
Trên thực tế, giải pháp cho vấn đề của tôi quan trọng đối với tôi ít hơn rất nhiều so với động cơ/lý do đằng sau nó, để giúp tôi hiểu thêm cách khối ruby làm việc :)
Đối với những gì nó có giá trị, bạn có thể làm được không? hoặc 1.odd? trong ruby> = 1.8.7 – steenslag