Что означает оператор вопросительного знака в Ruby?
какова цель оператора вопросительного знака в Ruby?
иногда это выглядит так:
assert !product.valid?
иногда это if
строительство.
9 ответов
Это соглашение стиля кода; оно указывает, что метод возвращает логическое значение.
вопросительный знак является допустимым символом в конце имени метода.
также Примечание!--3--> вместе с символом, вернет код символа ASCII для A
например:
?F # => will return 70
поочередно в Ruby 1.8 вы можете сделать:
"F"[0]
или в ruby 1.9:
"F".ord
также обратите внимание, что ?F
возвращает строку "F"
, поэтому, чтобы сделать код короче, вы также можете использовать ?F.ord
в Ruby 1.9, чтобы получить тот же результат, что и "F".ord
.
Это соглашение в Ruby, что методы, возвращающие логические значения, заканчиваются вопросительным знаком. В этом нет ничего более важного.
в вашем примере это просто часть имени метода. В Ruby вы также можете использовать восклицательные знаки в именах методов!
Другим примером вопросительных знаков в Ruby будет тернарный оператор.
customerName == "Fred" ? "Hello Fred" : "Who are you?"
в вашем примере
product.valid?
фактически является вызовом функции и вызывает функцию с именем valid?
. Некоторые типы"тест для условия" /булевых функций имеют знак вопроса как часть имени функции по соглашению.
возможно, стоит указать на это ?s разрешены только в именах методов, а не переменных. В процессе изучения Ruby я предположил, что ? назначил логический тип возврата, поэтому я попытался добавить их в переменные флага, что привело к ошибкам. Это привело к тому, что я ошибочно полагал, что существует какой-то специальный синтаксис ?s.
актуальность: почему имя переменной не может заканчиваться на `? в то время как имя метода может?
Я считаю, что это просто Соглашение для вещей, которые являются логическими. Это все равно что сказать:"IsValid
".
Он также используется в регулярных выражениях, что означает "не более одного повторения предыдущего символа"
например, регулярное выражение /hey?/
соответствует строкам"he
" и "hey
".