Không, không có cách viết tắt cho điều đó. Bạn có thể xác định một phương pháp:
def really_empty?(x)
x.strip.empty?
end
và sử dụng method
:
array.reject(&method(:really_empty?))
hoặc sử dụng một lambda:
really_empty = ->(x) { x.strip.empty? }
array.reject(&really_empty)
nhưng tôi sẽ không gọi một trong những người tốt hơn trừ khi bạn có một sử dụng cho really_empty?
ở những nơi đủ để tách logic có ý nghĩa.
Tuy nhiên, kể từ khi bạn đang sử dụng Rails, bạn chỉ có thể sử dụng blank?
thay vì .strip.empty?
:
array.reject(&:blank?)
Lưu ý rằng nil.blank?
là đúng trong khi nil.strip.empty?
chỉ trao cho bạn một ngoại lệ vì vậy họ không hoàn toàn tương đương; tuy nhiên, bạn có thể muốn từ chối nil
s vì vậy việc sử dụng blank?
có thể tốt hơn. blank?
cũng trả về giá trị đúng cho false
, {}
và []
nhưng có thể bạn không có các chuỗi đó trong chuỗi của mình.
Nguồn
2012-02-27 05:05:40
Bạn cũng có thể xác định true_empty? trên "lớp nội dung mảng" (ví dụ: Chuỗi) và sau đó sử dụng nó như phương pháp trống. Tôi không khuyên điều này, chỉ nói rằng bạn có thể .. – Johannes