Python có một tính năng tuyệt vời:Ruby có một cái gì đó giống như sự hiểu biết danh sách của Python?
print([j**2 for j in [2, 3, 4, 5]]) # => [4, 9, 16, 25]
Trong Ruby nó thậm chí còn đơn giản hơn:
puts [2, 3, 4, 5].map{|j| j**2}
nhưng nếu nó về lồng vòng Python trông thuận tiện hơn.
Trong Python chúng ta có thể làm điều này:
digits = [1, 2, 3]
chars = ['a', 'b', 'c']
print([str(d)+ch for d in digits for ch in chars if d >= 2 if ch == 'a'])
# => ['2a', '3a']
Tương đương trong Ruby là:
digits = [1, 2, 3]
chars = ['a', 'b', 'c']
list = []
digits.each do |d|
chars.each do |ch|
list.push d.to_s << ch if d >= 2 && ch == 'a'
end
end
puts list
Liệu Ruby có một cái gì đó tương tự?
Điều gì đó tương tự được thảo luận tại đây: http://stackoverflow.com/questions/310426/list-comprehension-in-ruby – Bharat
Phiên bản ngắn gọn là Ruby có một vài thứ khác nhau tương tự nhau, nhưng không có gì chính xác giống nhau và không có gì là súc tích (hoặc có thể đọc được). Phiên bản dài… là câu trả lời của RBK. – abarnert
@RBK cũng có, nhưng nó không phải về vòng lặp lồng nhau (1+ mảng) – defhlt