Funções
Uma versão em Rust da famosa pergunta de entrevistas FizzBuzz:
fn main() { print_fizzbuzz_to(20); } fn is_divisible(n: u32, divisor: u32) -> bool { if divisor == 0 { return false; } n % divisor == 0 } fn fizzbuzz(n: u32) -> String { let fizz = if is_divisible(n, 3) { "fizz" } else { "" }; let buzz = if is_divisible(n, 5) { "buzz" } else { "" }; if fizz.is_empty() && buzz.is_empty() { return format!("{n}"); } format!("{fizz}{buzz}") } fn print_fizzbuzz_to(n: u32) { for i in 1..=n { println!("{}", fizzbuzz(i)); } }
- Nos referimos em
main
a uma função escrita abaixo. Nem declarações prévias e nem cabeçalhos são necessários. - Os parâmetros de declaração são seguidos por um tipo (o inverso de algumas linguagens de programação) e, em seguida, um tipo de retorno.
- A última expressão em um corpo de uma função (ou qualquer bloco) torna-se o valor de retorno. Simplesmente omita o
;
no final da expressão. - Algumas funções não têm valor de retorno e retornam o ‘tipo unitário’,
()
. O compilador irá inferir isso se o tipo de retorno-> ()
for omitido. - A expressão de intervalo no loop
for
emimprimir_fizzbuzz_para()
contém=n
, o que faz com que inclua o limite superior.