SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
13.11.2024

Lição: 15: Tipos de Retorno de Funções e Múltiplos Retornos em Swift

Em Swift, as funções são um bloco fundamental para organizar o código. Compreender como especificar tipos de retorno e retornar múltiplos valores de funções irá aprimorar significativamente suas habilidades de programação. Nesta aula, vamos explorar como definir tipos de retorno para funções, bem como técnicas para retornar múltiplos valores.

1. Tipos de Retorno de Funções

Toda função em Swift pode ter um tipo de retorno. O tipo de retorno é especificado após a lista de parâmetros, usando o símbolo -> seguido pelo tipo de valor que será retornado. Se uma função não retornar um valor, ela tem um tipo de retorno implícito de Void, mas você também pode especificá-lo explicitamente.

Sintaxe para Tipos de Retorno de Funções

func nomeDaFuncao(parâmetros) -> TipoDeRetorno {
    // corpo da função
    return valor
}

Exemplo: Função com um Único Tipo de Retorno

Aqui está um exemplo de uma função que recebe dois números inteiros como parâmetros e retorna sua soma:

func somarNumeros(a: Int, b: Int) -> Int {
    return a + b
}

// Utilizando a função
let resultado = somarNumeros(a: 5, b: 7)
print("Soma: \(resultado)") // Saída: Soma: 12

No exemplo acima, a função somarNumeros recebe dois inteiros e retorna sua soma como um inteiro.

2. Múltiplos Valores de Retorno

Em algumas situações, você pode querer que uma função retorne múltiplos valores. Swift permite isso retornando uma tupla, que é uma estrutura leve que pode conter múltiplos valores de diferentes tipos.

Sintaxe para Retornar Tuplas

func nomeDaFuncao(parâmetros) -> (TipoDeRetorno1, TipoDeRetorno2) {
    // corpo da função
    return (valor1, valor2)
}

Exemplo: Função Retornando uma Tupla

Aqui está um exemplo de uma função que recebe dois inteiros e retorna tanto sua soma quanto seu produto:

func calcularSomaEProduto(a: Int, b: Int) -> (soma: Int, produto: Int) {
    let soma = a + b
    let produto = a * b
    return (soma, produto)
}

// Utilizando a função
let resultados = calcularSomaEProduto(a: 3, b: 4)
print("Soma: \(resultados.soma), Produto: \(resultados.produto)") 
// Saída: Soma: 7, Produto: 12

Neste exemplo, calcularSomaEProduto retorna uma tupla contendo tanto a soma quanto o produto dos dois inteiros. Note como rotulamos os elementos da tupla como soma e produto para uma melhor legibilidade do código.

3. Desestruturando Valores de Retorno de Tupla

Você também pode desestruturar a tupla retornada em variáveis individuais para conveniência:

let (soma, produto) = calcularSomaEProduto(a: 6, b: 9)
print("Soma: \(soma), Produto: \(produto)") 
// Saída: Soma: 15, Produto: 54

Desestruturar facilita o acesso aos valores retornados diretamente, sem a necessidade de referenciar as propriedades da tupla.

4. Usando Opcionais com Tipos de Retorno

Às vezes, é possível que sua função não retorne um valor. Swift utiliza tipos Optional para lidar com esses casos. Um opcional pode conter um valor ou nil, indicando que um valor está ausente.

Exemplo: Função Retornando um Opcional

func encontrarValorMaximo(em numeros: [Int]) -> Int? {
    guard !numeros.isEmpty else { return nil }
    return numeros.max()
}

// Utilizando a função
if let valorMaximo = encontrarValorMaximo(em: [3, 5, 1, 9]) {
    print("Valor Máximo: \(valorMaximo)") // Saída: Valor Máximo: 9
} else {
    print("O array está vazio.")
}

Neste exemplo, a função encontrarValorMaximo retorna um inteiro opcional. Se o array estiver vazio, ela retorna nil.

Conclusão

Nesta aula, aprendemos como definir tipos de retorno para funções em Swift e como retornar múltiplos valores usando tuplas. Também exploramos como lidar com casos em que uma função pode não retornar um valor usando opcionais. Esses recursos permitem um código mais versátil e legível em suas aplicações Swift.

Continue praticando esses conceitos, e em breve você estará confortável usando funções com diversos tipos de retorno em sua jornada de programação!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!