2013-08-24 3 views
0

У меня есть функция здесь, которая проверяет, является ли последний элемент входного массива хэш-таблицей. Если это так, он удалит последний элемент в таблице хешей. Это из решения в разделе 6.2 Ruby Monk.Что такое? operator do in Ruby

def remove_last(*arguments) 
    options = arguments[-1].is_a?(Hash) ? arguments.pop : {} 
end 

Что такое '?' оператор делает между ... (Хэш)? arguments.pop ...

Почему существует аргумент ': {}' после arguments.pop.

+1

Прочтите вступительную книгу Ruby. – sawa

ответ

2

Это тернарный условный оператор. Она имеет следующий вид:

condition ? true_value : false_value 

Он оценивает состояние, и принимает значение true_value, когда условие истинно, и false_value, когда условие ложно.

+0

Хороший ответ. Сжатый. – anthropomorphic

+1

Вы должны проголосовать, чтобы закрыть эти вопросы как вне темы из-за отсутствия базового понимания задаваемого вопроса. – xaxxon

2

Это ternary operator

Это как ярлык

if arguments[-1]is.A?(Hash) 
    arguments.pop 
else 
    {} 
end 

Вы можете использовать это всякий раз, когда у вас есть короткий, краткий, если заявления

0

Это называется тройной оператор

(condition) ? (use_this_if_true) : (use_this_if_false) 

В примере, который вы укажете, параметры будут продолжены ain arguments.pop, если аргументы [-1] .is_a? (Hash), в противном случае параметры будут содержать пустой хэш, представленный {}