Saltar al contenido

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.

01-literals-and-escapes.zolo
Playground
// 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.

10-byte-literals.zolo
Playground
// 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.

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br