2015-08-17 5 views
3

Я нашел код, аналогичный приведенному ниже в файле ftp.rb. Мне интересно, что такое использование ? в приведенном ниже примере. Я знаю, что он проверяет равенство, но никогда не видел такого синтаксисаRuby: Любопытное использование "?" оператор в сравнении строк для равенства

p "-" == ?- # Prints true 
p "a" == ?- # Prints false 

ответ

4

Это старый синтаксис для одной строки символов.

?- означает '-'

EDIT: оказывается, я не мог быть более неправильным. См. Комментарий @ Jörg ниже.

+0

Я вижу, спасибо большое –

+1

Это синтаксис * не * для строки с одним символом, это синтаксис для предпочтительного представления символа. В более старых версиях, где представление символа (например, то, что возвращается 'String # []'), было 'Fixnum', представляющим кодовую точку ASCII, буква'? 'Оценивается как' Fixnum', в новых версиях Ruby, где предпочтительным представлением символа является односимвольный 'String', он вычисляет' String'. Итак, если вы хотите называть его синтаксисом для строк * вообще *, вы должны называть его * новым * синтаксисом для строк, а не старым синтаксисом для строк, потому что в старых версиях это синтаксис для fixnums. –

Смежные вопросы