foo ||= []
foo << :element
Cảm thấy hơi lắt léo. Có cách nào thành ngữ hơn không?
foo ||= []
foo << :element
Cảm thấy hơi lắt léo. Có cách nào thành ngữ hơn không?
Câu trả lời:
(foo ||= []) << :element
Nhưng meh. Có thực sự khó khăn khi giữ cho nó có thể đọc được không?
foobản thân nó là một biểu thức phức tạp hơn, chẳng hạn như một hàm băm (lồng nhau) trong đó bạn tra cứu các giá trị, thì đây là một cách hay để tránh tìm kiếm các giá trị nhiều lần hoặc sử dụng một biến khác cho giá trị mảng đã tra cứu.
Bạn cũng có thể hưởng lợi từ Kernel # Array , như:
# foo = nil
foo = Array(foo).push(:element)
# => [:element]
có lợi ích là làm phẳng một Mảng tiềm năng, như:
# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
foo = foođặt foothành nilkhi nào foolà không xác định. Ngoài ra, Kernel#Arraykhông làm phẳng foo. Nó chỉ trả về foonếu nó là một Mảng.
(foo ||= []) << :element, nhưng tôi thấy nó xấu hơn.