Files
saselang-bible/examples/021-strings-unicode-et-encodages-examples.md
2026-09-12 19:31:05 +02:00

3.6 KiB

Exemples / DO-DON'T — Chapitre 21 — Strings, Unicode et encodages

Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.

Exemples extraits du chapitre

Exemple 1

String text = "abc";
text::append("def"); // OK

Exemple 2

'A'
'é'
'中'
'😀'
'\n'
'\u{1F600}'

Exemple 3

Utf8Char
Utf16Char
Utf32Char

Utf8String
Utf16String
Utf32String

Exemple 4

Utf8Char
    exactement un Unicode scalar encodé en UTF-8
    1 à 4 uint8

Utf16Char
    exactement un Unicode scalar encodé en UTF-16
    1 à 2 uint16

Utf32Char
    exactement un Unicode scalar encodé en UTF-32
    1 uint32

Exemple 5

Utf8String
    séquence UTF-8 valide

Utf16String
    séquence UTF-16 valide

Utf32String
    séquence UTF-32 valide

Exemple 6

UTF-8  -> uint8
UTF-16 -> uint16
UTF-32 -> uint32

Exemple 7

char::toUtf8Char()
Utf8Char::toChar()
Utf8Char::toUtf16Char()

Utf8Char::tryFrom(uint8)
Utf16Char::tryFrom(uint16)
Utf32Char::tryFrom(uint32)

Utf8Char::tryToUint8()
Utf16Char::tryToUint16()
Utf32Char::toUint32()

Exemple 8

Utf8String text = ...;
Utf16Char value = ...;

text::append(value);                // ERROR
text::append(value::toUtf8Char());  // OK

Exemple 9

String text = ...;
text[5]; // ERROR

Exemple 10

text::scalarAt(index) -> char
text::scalarCount() -> uint64

Exemple 11

Utf8String[index]  -> uint8
Utf16String[index] -> uint16
Utf32String[index] -> uint32

Exemple 12

encodedCharAt(scalarIndex)
    retourne le UtfXChar correspondant au scalar ordinal demandé

scalarAt(scalarIndex)
    retourne le char correspondant

Exemple 13

Utf8String::encodedCharAt(uint64)  -> Utf8Char
Utf16String::encodedCharAt(uint64) -> Utf16Char
Utf32String::encodedCharAt(uint64) -> Utf32Char

Utf8String::scalarAt(uint64)  -> char
Utf16String::scalarAt(uint64) -> char
Utf32String::scalarAt(uint64) -> char

Exemple 14

scalarCount()

Exemple 15

codeUnitCount()
scalarCount()

Exemple 16

String implements Iterable<char>

Exemple 17

code units
encoded chars
Unicode scalars

Exemple 18

codeUnits()
encodedChars()
scalars()

Exemple 19

String text = "abc";
text::append("def");

Exemple 20

Utf8String text = ...;
Utf8Char value = ...;

text::append(value); // OK

Exemple 21

text[index] = 0xFF; // ERROR

Exemple 22

"..."                 String normale, escapes actifs
"""..."""             String normale multiligne
r"..."                String brute
r"""..."""            String brute multiligne
i"..."                String interpolée
i"""..."""            String interpolée multiligne
ir"..."               interpolation + contenu brut, réservé
b"..."                bytes, réservé
br"..."               bytes bruts, réservé
u8"..."               texte encodé UTF-8 explicitement, réservé
u16"..."              texte encodé UTF-16 explicitement, réservé
u32"..."              texte encodé UTF-32 explicitement, réservé
c"..."                chaîne compatible C, réservé
cr"..."               chaîne C brute, réservé
t"..."                template structuré, réservé

Exemple 23

\\
\"
\'
\n
\r
\t
\0
\u{...}

DO / DON'T / WHY / compiler error / edge cases

À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.