Я проходил упражнения в Ruby Monk, и у меня возникли проблемы с расшифровкой одного из примеров решений.Ruby - расшифровка:
Проблемы (from this page) была:
Написать метод, который подсчитывает количество элементов массива, который передаются в, только если индекс числа 42 в одномерного представление массива 5.
Мое решение, которое работало нормально, было:
def zen(array)
converted_array = array.flatten.compact
converted_array.count if converted_array.index(42) == 5
end
Их решение было:
def zen(array)
converted = array.compact.flatten
converted.index(42) == 5 ? converted.count : nil
end
Я понимаю Everthing слева от :
во второй строке метода, но после этого я не могу понять это. Я думал, что compact
удаляет все значения nil из массива?
':' идет с '?', Это единственный оператор. Это ярлык: 'a? B: c' is' if (a) then b else c'. – Mat
http://stackoverflow.com/questions/4252936/how-do-i-use-the-conditional-operator-in-ruby – Mat
@Mat, большое спасибо за разъяснение этого. Если вы ответите, я с удовольствием приму это. – SoSimple