Когда использовать какой тип STRING в eiffel? Я видел, как использовал READABLE_STRING_GENERAL
и должен был l_readable_string.out' to convert it to
STRING`
READABLE_STRING_GENERAL против STRING
Ответы (1)
READABLE_STRING_GENERAL
является предком всех вариантов строк: изменяемых, неизменяемых, 8-битных, 32-битных, поэтому его можно использовать в качестве формального типа аргумента, когда функция может обрабатывать любой вариант строки.
READABLE_STRING_32
— хороший выбор, когда код обрабатывает Unicode и может работать как с изменяемой, так и с неизменяемой версиями.
STRING_32
— это изменяемый вариант Unicode. Код может изменить свое значение.
STRING
— это псевдоним строкового типа, который может быть либо STRING_8
, либо STRING_32
. На момент написания только несколько библиотек адаптированы для обработки отображения STRING
в STRING_32
. Однако в будущем это сопоставление может стать значением по умолчанию для облегчения работы с Unicode.
Независимо от будущего, я бы рекомендовал использовать ..._STRING_32
для обработки строк. Таким образом, код напрямую поддерживает Unicode. Библиотеки также обновляются в этом направлении. Например, io.put_string_32
можно использовать для вывода строки Unicode на стандартный вывод (с использованием текущей локали).
STRING
не поддерживает Unicode? Значит, он 8-битный?
- person U. Windl; 24.05.2021
STRING
поддерживает или не поддерживает Unicode в зависимости от сопоставления классов. Когда он отображается на STRING_8
(по умолчанию на момент написания), он является 8-битным.
- person Alexander Kogtenkov; 24.05.2021