10 · Strings
Literales y Escapes
Comillas dobles, secuencias de escape (\n \t \" \\) y el tipo char.
En esta página
Toda string en Zolo usa comillas dobles. No existe sintaxis de comillas
simples para strings — 'a' es un literal de carácter (tipo char), útil
en comparaciones pero distinto de str.
Las secuencias de escape básicas son \n (nueva línea), \t (tabulación),
\" (comillas dentro de la string) y \\ (barra invertida literal):
Literales, escapes y el método .len() en strings simples.
// Feature: Strings — literals and escape sequences
// Syntax: `"..."`, `"""..."""`, and raw `r"..."` strings
// When to use: represent text. Single quotes are CHAR literals.
// Strings always use double quotes.
let greeting = "Hello, world!"
print(greeting)
// expected: Hello, world!
// Basic escape sequences.
print("line 1\nline 2") // \n line break
print("col1\tcol2\tcol3") // \t tab
print("quote: \"") // \" literal quote inside string
print("slash: \\") // \\ literal backslash
print("return: end\rstart") // \r carriage return
// Single quotes are CHAR literals (1 character only).
// Useful for character comparisons, not strings.
let c = 'a'
print(c == 'a')
// expected: true
// Cooked strings and character literals accept Unicode scalar escapes.
print("Açaí - café")
print("emoji: \u{1F680}")
print('\u{03BB}')
// Empty strings and single-char strings.
let empty = ""
let s = "x"
print(empty.len()) // 0
print(s.len()) // 1
Desafío
Crea una string con una barra invertida seguida de una n literal (es decir,
los dos caracteres \ y n, no un salto de línea). Imprímela y confirma que
el resultado muestra \n y no una línea en blanco.
Valores exactos de bytes
b"\xAB" guarda un byte con valor 171. Cada escape hexadecimal requiere exactamente dos dígitos. El texto sin escapes aporta bytes UTF-8, mientras que los escapes conservan cero y bytes inválidos en UTF-8. Los literales de bytes no interpolan expresiones. .len() cuenta los bytes; .bytes() devuelve una copia como valores enteros, indexados desde cero como los demás arrays.
// The KTX 2 signature contains bytes that are not valid UTF-8.
let signature = b"\xABKTX 20\xBB\r\n\x1A\n"
print(signature.len())
print(signature.bytes()[0])
print(signature.bytes()[7])
Los literales de bytes funcionan en la VM y en los backends native y LLVM, incluida la VM del navegador. El wasm-aot independiente todavía los rechaza al compilar porque no tiene una representación para bytes opacos.
Consulta también