Atribuição em if
Os blocos if e elseif podem receber uma atribuição no lugar de uma expressão condicional. Ao avaliar o condicional, a atribuição será realizada e o valor que foi atribuído será usado como expressão condicional. A variável atribuída está no escopo apenas para o corpo do condicional, ou seja, nunca está disponível se o valor não for truthy. E você precisa usar o “operador walrus” := em vez de = para fazer a atribuição.
if user := database.find_user "moon" print user.nameif user := database.find_user "moon" print user.nameif hello := os.getenv "hello" print "Você tem hello", helloelseif world := os.getenv "world" print "você tem world", worldelse print "nada :("if hello := os.getenv "hello" print "Você tem hello", helloelseif world := os.getenv "world" print "você tem world", worldelse print "nada :("Atribuição em if com múltiplos valores de retorno. Apenas o primeiro valor é verificado, os outros valores estão no escopo.
if success, result := pcall -> "obter resultado sem problemas" print result -- variável result está no escopoprint "OK"if success, result := pcall -> "obter resultado sem problemas" print result -- variável result está no escopoprint "OK"Atribuição em while
Seção intitulada “Atribuição em while”Você também pode usar atribuição em if em um loop while para obter o valor como condição do loop.
while byte := stream\read_one! -- fazer algo com o byte print bytewhile byte := stream\read_one! -- fazer algo com o byte print byte