使用index方法,我尝试使用某个变量来查找某个值是否存在,如果该变量不存在,则尝试另一个变量;类似于下面的第三行:

a = [ "a", "b", "c" ]
a.index("b")   #=> 1
a.index("z" or "y" or "x" or "b")   #=> 1

…表示如果在数组中找不到“z”,则尝试“y”;如果找不到y,则尝试x;如果找不到x,则尝试b
我该怎么做才能正确?

最佳答案

蒂莫特迪但我更喜欢使用数组注入。

%w(x y z b).inject(nil) { |i, e| i or a.index(e) } #=> 1

还有一种方法可以用更类似于伪代码的代码来实现这一点。
class String
  def | other
    ->(e) { self==e || other==e }
  end
end

class Proc
  def | other
    ->(e) { self.call(e) || other==e }
  end
end

a.index(&('x' | 'y' | 'z' | 'b')) #=> 1

关于ruby - Ruby:将“index”方法与“OR”一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2158964/

10-12 03:20