对于Ruby 2.4,我想检测数组中匹配元素的第一个索引。但我发现“detect_with_index”不是Ruby中的函数......
2.4.0 :005 > distance = "two"
...
2.4.0 :008 > NUMBERS_IN_WORDS_TOKENS = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
=> ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
2.4.0 :009 > distance = NUMBERS_IN_WORDS_TOKENS.detect_with_index{|str, index| str.eql?(distance.downcase) ? index : nil}
NoMethodError: undefined method `detect_with_index' for #<Array:0x007fe69b2692b8>
Did you mean? each_with_index
from (irb):9
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/console.rb:65:in `start'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/console_helper.rb:9:in `start'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/commands_tasks.rb:78:in `console'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
如何找到第一个匹配的索引?
答案 0 :(得分:2)
只需使用Array.index,又名find_index,就像
一样a = [ "a", "b", "c" ]
a.index("b") #=> 1
答案 1 :(得分:0)
你可以这样做:
match = list.find { |l| l.owner == myself }
match_index = list.index(match)
答案 2 :(得分:0)
NUMBERS_IN_WORDS_TOKENS.find_index(distance)
请找到解释第一个索引的解释here。