"\t"Это просто сокращение от «а» или «\ т»?" />

Какой смысл префикса? оператор в Ruby 1.9

ruby operators

155 просмотра

3 ответа

Мне просто интересно, какие приложения у него есть. Я верю в 1.9 приставку? вернет строковую версию этого символа.

?a   #=> "a"
?\t  #=> "\t"

Это просто сокращение от «а» или «\ т»?

Автор: Uri Источник Размещён: 13.11.2019 11:30

Ответы (3)


9 плюса

Решение

Это в основном для обратной совместимости. В версиях до 1.9 ?оценивается как Fixnumсоответствующее значению ASCII рассматриваемого символа. Индексирование в String также вернул Fixnum.

Итак, если вы хотите проверить, например, является ли третий символ строки буквой «а», вы должны сделать

s[2] == ?a

В Ruby 1.9 строки больше не обрабатываются как массив фиксированных чисел, а как итератор символов (фактически односимвольные строки). В результате приведенный выше код больше не будет работать: s[2]будет строкой, ?aбудет числом, и эти два никогда не будут равны.

Поэтому ?также был изменен для оценки односимвольной строки, так что приведенный выше код продолжает работать.

Автор: Jörg W Mittag Размещён: 08.08.2011 03:33

2 плюса

в ruby ​​1.8 и ранее

?a 

вернет ASCII-версию символа 'a'.

в 1.9 он просто возвращает строку (как вы и предполагали)

Автор: Vlad Khomich Размещён: 08.08.2011 01:13

1 плюс

Вы правы, вы получаете строковое значение символов. Ранее он использовался для получения значения ASCII символов.

Автор: J Lundberg Размещён: 08.08.2011 01:13
Вопросы из категории :
32x32