Variáveis
Declaração com :=, constantes com steady, escopo e a variável local com shadow.
Declarar#
O operador de atribuição é :=. Ele cria a variável se ela não existir e atualiza se existir.
dataforge
nome := "DataForge"
idade := 30
altura := 1.75
ativo := yes
vazio := void
out nome, idade, altura, ativo, vaziosaída
DataForge 30 1.75 yes voidConstantes#
steady declara um valor imutável. Reatribuir é erro — detectado inclusive pelo analisador estático, antes de executar.
dataforge
steady PI := 3.14159
steady LIMITE := 100
out PI, LIMITE
monitor:
PI := 0
handle e:
out e.messagesaída
3.14159 100
Cannot reassign steady (constant) 'PI'Escopo#
Uma ação enxerga as variáveis do escopo onde foi definida. Atribuir a um nome que já existe fora atualiza o de fora:
dataforge
contador := 0
action incrementar():
contador := contador + 1 # atualiza o de fora
yield contador
incrementar()
incrementar()
out contadorsaída
2shadow — uma cópia local#
Quando você quer um nome local que não afeta o de fora, use shadow:
dataforge
x := 10
action le():
yield x # enxerga o de fora: 10
action sombreia():
shadow x := 99 # cria uma cópia local
yield x # 99
out le(), sombreia(), xsaída
10 99 10A terceira saída é o ponto: x continua valendo 10. shadow diz explicitamente "este nome é meu, aqui dentro".
Nomes válidos#
- Começam com letra ou
_, seguidos de letras, dígitos ou_ - São sensíveis à caixa:
totaleTotalsão nomes diferentes - Não podem ser uma das 81 palavras reservadas
dataforge
// nao := 1 # erro: 'no' faz parte de 'nao'? Não — 'nao' é válido.
no := 1 # ERRO: 'no' é palavra reservada (o literal falso)
resposta := no # certo: usa 'no' como valorApagar#
delete remove um nome do escopo:
dataforge
temporario := "vai sumir"
out temporario
delete temporario
monitor:
out temporario
handle e:
out e.messagesaída
vai sumir
Undefined name: 'temporario'