Slide 10 de 74

Strings

Interpolação e escapes
proc main(): void {
	name := "bee"
	echo "olá, {name}!"              // interpolado
	echo "{name + name}!"           // qualquer expressão
	echo "uma chave literal: \{"    // escapado
	echo "tab:\t| aspas:\" | \q"    // \q é só q
	echo "duas
linhas"
}
Strings entre crases
proc main(): void {
	name := "bee"
	block := `
		olá, {name}
		uma chave literal: \{
		a barra invertida fica: C:\hive\bin
	`
	echo block
}

Uma string entre aspas duplas interpola {expressão} — qualquer coisa que seja uma expressão, não só um nome — e pode ocupar várias linhas. Seus escapes são \n, \t, \r, \", \\, e \{ para uma chave literal; uma barra invertida antes de qualquer outro caractere é só esse caractere, então "\q" é q.

Uma string entre crases serve para um bloco de texto. Sua indentação é removida em tempo de compilação até a menor margem que as linhas têm em comum — uma tabulação e um espaço contam como um cada — e uma primeira ou última linha em branco é descartada, então ela pode ser indentada junto com o código em volta. Ela também interpola {expressão}, e seu único escape é \{: toda outra barra invertida é uma barra invertida, o que a torna o lugar para uma expressão regular ou um caminho do Windows. Ela não pode conter crase alguma; junte uma com "`" se precisar.

Uma Str é um valor, como um Int: nada escreve dentro dela, e toda operação devolve uma string nova. Ela é contada, indexada e fatiada por caractere, o que o slide depois do verificador de limites mostra.