2010-06-05 2 views

ответ

6

Ruby 1.9 имеет find_index метод:

ruby-1.9.1-p378 > [nil, nil, false, 5, 10, 20].find_index { |x| not x.nil? } # detect false values 
=> 2 
ruby-1.9.1-p378 > [nil, nil, false, 5, 10, 20].find_index { |x| x } 
=> 3 

find_index кажется, будет доступна в backports при необходимости в Рубине раньше, чем 1.8.7.

+0

это будет отжимать, если массив = [ноль, ноль, ноль, ноль, ноль] – Salil

+0

индекс является псевдонимом find_index, так [ноль, ноль, 1] .index {| х | x} тоже работает. – steenslag

+0

Я нахожу [nil, nil, 5, 10] .index (&: present?) В Rails кратким, если вас не интересуют ложные значения. – TJChambers

0

Я думаю, что лучший ответ в вопросе только. только изменить

first_non_null_index = (array.compact.empty?) "No 'Non null' value exist" : array.index(array.dup.compact[0] 

Рассмотрим следующий пример

array = [nil, nil, nil, nil, nil] 
first_non_null_index = array.index(array.dup.compact[0]) #this will return '0' which is wrong 
Смежные вопросы