46
有沒有更好的方式來寫:使用.include檢查數組中的多個項目? - 紅寶石初學者
if myarray.include? 'val1' ||
myarray.include? 'val2' ||
myarray.include? 'val3' ||
myarray.include? 'val4'
有沒有更好的方式來寫:使用.include檢查數組中的多個項目? - 紅寶石初學者
if myarray.include? 'val1' ||
myarray.include? 'val2' ||
myarray.include? 'val3' ||
myarray.include? 'val4'
使用set交叉口(Array#:&):
(myarray & ["val1", "val2", "val3", "val4"]).present?
您也可以循環(any?
將停止在第一次出現):
myarray.any? { |x| ["val1", "val2", "val3", "val4"].include?(x) }
對小陣列來說沒問題,在一般情況下,你最好有O(1)謂詞:
values = ["val1", "val2", "val3", "val4"].to_set
myarray.any? { |x| values.include?(x) }
使用Ruby> = 2.1,使用Set#intersect:
myarray.to_set.intersect?(values.to_set)
是有什麼簡單的閱讀這樣'如果myarray.include? ['val1','val2','val3']'如果不是,那麼我想你的答案似乎是最好的。 – Hopstream
@Hopstream,增加了另一個實現與任何? – tokland
爲什麼使用否定形式?爲什麼不使用'(self&other).any?'而不是'!(self&other).empty?' –