3.6 KiB
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.