// DOCS NAVIGATION
F-Strings Avançadas_
SOURCE: content/docs/reference/04-avancado.md — 04 Avançado / 8. F-Strings Avançadas / Advanced F-Strings
PT-BR:
F-strings (f"...") suportam expressões arbitrárias dentro de {...}. Praticamente qualquer expressão válida em SpectraLang pode ser interpolada.
EN-US:
F-strings (f"...") support arbitrary expressions inside {...}. Virtually any valid SpectraLang expression can be interpolated.
module fstrings_avancado
from std.io import println
public func main() {
let nome = "Alice"
let pontos = 850
let nivel = 5
// Variáveis simples / Simple variables
println(f"Jogador: {nome}")
// Expressões aritméticas / Arithmetic expressions
println(f"Próximo nível: {nivel + 1}")
println(f"Pontos necessários: {(nivel + 1) * 200 - pontos}")
// Chamadas de função / Function calls
println(f"Dobro dos pontos: {dobrar(pontos)}")
// Acesso a campos / Field access
let p = Ponto { x: 10, y: 20 }
println(f"Posição: ({p.x}, {p.y})")
// Comparações / Comparisons
println(f"Nível máximo: {nivel == 10}")
// Literais / Literals
println(f"Total: {pontos + 150}")
// Expressões complexas / Complex expressions
let media = (80 + 90 + 75) / 3
println(f"Média: {media}")
// Interpolação dentro de interpolação (cuidado com clareza)
// Interpolation within interpolation (be careful with clarity)
let lista = [1, 2, 3]
println(f"Primeiro: {lista[0]}, Último: {lista[2]}")
}
func dobrar(x: int) returns int { x * 2 }
record Ponto { x: int, y: int }
Casos Especiais / Special Cases
// Chaves literais — não suportadas diretamente / Literal braces — not directly supported
// Use uma variável intermediária / Use an intermediate variable
let chave_esq = "{"
let chave_dir = "}"
println(f"Objeto JS: {chave_esq}valor{chave_dir}")
// Strings vazias / Empty strings
let vazio = ""
println(f"Campo: '{vazio}'")
// Campo: ''
// Valores de retorno void (unit) não devem ser interpolados
// Void (unit) return values should not be interpolated