READABLE_STRING_GENERAL против STRING

Когда использовать какой тип STRING в eiffel? Я видел, как использовал READABLE_STRING_GENERAL и должен был l_readable_string.out' to convert it to STRING`


person Pipo    schedule 28.11.2020    source источник


Ответы (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 на стандартный вывод (с использованием текущей локали).

person Alexander Kogtenkov    schedule 29.11.2020
comment
Означает ли это, что STRING не поддерживает Unicode? Значит, он 8-битный? - person U. Windl; 24.05.2021
comment
@U.Windl STRING поддерживает или не поддерживает Unicode в зависимости от сопоставления классов. Когда он отображается на STRING_8 (по умолчанию на момент написания), он является 8-битным. - person Alexander Kogtenkov; 24.05.2021