我正在使用Ruby 2.4。如果我想找到数组的第一个非零元素,我可以使用
a.find { |x| !x.nil? }
但是如何找到第一个非零元素出现位置的索引?
答案 0 :(得分:4)
使用index
或find_index
方法。
a.index { |x| !x.nil? }
返回ary中第一个对象的索引,使对象为== to obj。如果给出一个块而不是一个参数,则返回该块返回true的第一个对象的索引。如果找不到匹配则返回nil。
https://ruby-doc.org/core-2.2.0/Array.html#method-i-find_index
答案 1 :(得分:1)
Pro tipp,您可以使用methodsolver
gem来查找类似的方法
solve { [nil,7,7,nil,nil,nil].___ { |x| !x.nil? } == 1 }
打印
Found 2 methods for #___
- Array#find_index
- Array#index
方法求解器对接收器类上的所有方法进行强力搜索,并返回块求值为true的那些方法。它尽最大努力避免危险的方法,但最好在可能导致危险副作用的类上谨慎使用。