Controle de Fluxo Let
Rust possui algumas construçÔes de fluxo de controle que diferem de outras linguagens. Elas sĂŁo usadas para correspondĂȘncia de padrĂ”es:
- ExpressÔes
if let
- ExpressÔes
let else
- ExpressÔes
while let
ExpressÔes if let
A expressĂŁo if let
lhe permite executar um cĂłdigo diferente caso um valor corresponde a um padrĂŁo:
ExpressÔes let else
Para o caso comum de corresponder a um padrão e retornar da função, use let else
. O caso âelseâ deve divergir (return
, break
ou pĂąnico - qualquer coisa, exceto cair no final do bloco).
Similar a if let
, hĂĄ uma variante while let
que testa repetidamente se um valor corresponde a um padrĂŁo:
Aqui String::pop
retorna Some(c)
até que a string esteja vazia e depois ela retornarå None
. O while let
nos permite iterar por todos os itens.
Speaker Notes
This slide should take about 10 minutes.
if-let
- Ao contrĂĄrio de
match
,if let
não precisa cobrir todas as ramificaçÔes. Isso pode tornå-lo mais conciso do quematch
. - Um uso comum Ă© lidar com valores
Some
ao trabalhar-se comOption
. - Ao contrĂĄrio de
match
,if let
nĂŁo suporta clĂĄusulas de guarda para correspondĂȘncia de padrĂ”es.
let-else
if-let
s podem se acumular, como mostrado. A construção let-else
permite o âachatamentoâ desse cĂłdigo aninhado. Reescreva a versĂŁo âestranhaâ para os alunos, para que eles possam ver a transformação.
A versĂŁo reescrita Ă©:
while-let
- Ressalte que o loop
while let
continuarĂĄ executando enquanto o valor corresponder ao padrĂŁo. - VocĂȘ pode reescrever o loop
while let
como um loop infinito com uma instruçãoif
que Ă© interrompido quando nĂŁo houver mais nenhum valor para unwrap (desempacotar) paraname.pop()
. Owhile let
fornece um atalho para o cenĂĄrio acima.