2015-01-26 3 views
2

Я не понимаю ? в ?x.succ. Что это?Что такое? in? char

(Этот вопрос был вызван this answer на код гольфа.)

+0

Контекст важен. Как правило, вы просто делаете «x» или что-то подобное для ясности. '? x' - это просто« игра в гольф », чтобы написать« x » – Brennan

+0

@Brennan Да,? x - символ меньше, чем« x », что объясняет, почему он может использоваться в настройке гольфа для кода. – user3334690

ответ

4

Это просто означает «характер», как и в ?x является «х символов». Это была большая сделка в версиях Ruby до 1.9. Теперь это скорее анахронизм.

Рубин 1.9+:

?x 
# => "x" 

Рубин 1.8.7 и перед:

?x 
# => 120 

Это было подобно тому, как 'x' в C является одиночным символом, где "x" представляет собой строку символов.

+0

Это объясняет, почему он работает только с одним символом. Почему это было изменено с ruby ​​1.9? Кроме того, как мне называть это? Это похоже скорее на синтаксис, чем на оператора, поэтому я мог понять, не имеет ли он имени, но googling? точно не добрался до меня ... – user3334690

+0

@ user3334690 Лично я просто назвал бы это символом буква. – Ajedi32

+0

Я считаю, что это была уступка эффективности в более ранних версиях Ruby, которые, вы должны помнить, относятся к середине 1990-х годов, когда компьютеры были более медленными. Накладные расходы на создание строки для представления одного символа были слишком высокими для некоторых задач. Теперь это не проблема, следовательно, переключатель. – tadman