ruby-on-rails - tracks - treehouse courses
Compruebe si hay varios elementos en la matriz usando.include?-Ruby Beginner (2)
Crea tu propio método reutilizable:
class String
def include_any?(array)
array.any? {|i| self.include? i}
end
end
Uso
"a string with many words".include_any?(["a", "string"])
¿Hay una mejor manera de escribir esto?
if myarray.include? ''val1'' ||
myarray.include? ''val2'' ||
myarray.include? ''val3'' ||
myarray.include? ''val4''
Usando las intersecciones establecidas ( Array#:& ):
(myarray & ["val1", "val2", "val3", "val4"]).present?
También puede hacer un bucle ( any?
detendrá en la primera aparición):
myarray.any? { |x| ["val1", "val2", "val3", "val4"].include?(x) }
Eso está bien para arreglos pequeños, en el caso general es mejor tener O (1) predicados:
values = ["val1", "val2", "val3", "val4"].to_set
myarray.any? { |x| values.include?(x) }
Con Ruby> = 2.1, use Set#intersect :
myarray.to_set.intersect?(values.to_set)