Funções de expressão única
Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 60 de 93.
Quando uma função contém apenas uma única expressão, Kotlin oferece uma sintaxe mais concisa. Em vez de usar chaves e a palavra-chave return, você pode usar um sinal de igual seguido diretamente pela expressão.
Aqui está uma função regular comparada à sua equivalente de expressão única:
// Função regular
fun double(n: Int): Int {
return n * 2
}
// Função de expressão única
fun double(n: Int): Int = n * 2Ambas as versões funcionam de forma idêntica, mas a segunda é mais curta e fácil de ler para operações simples.
Kotlin pode até inferir o tipo de retorno de funções com uma única expressão, permitindo que você o omita completamente:
fun double(n: Int) = n * 2
fun greet(name: String) = "Hello, $name!"Essa sintaxe funciona perfeitamente também com expressões condicionais:
fun max(a: Int, b: Int) = if (a > b) a else b
fun isEven(n: Int) = n % 2 == 0Funções de expressão única são ideais para cálculos, validações e transformações simples. Elas mantêm seu código limpo e focado no que a função faz, em vez de se concentrar nos mecanismos de retorno de um valor.
Desafio
MédioEscreva uma função calculateDiscount que receba price e percentage e retorne o preço com desconto.
Use a sintaxe de função de expressão única (com = em vez de chaves e return) para calcular o preço final após aplicar o desconto.
O preço com desconto é calculado como: price - (price * percentage / 100)
Parâmetros:
price(Double): O preço originalpercentage(Int): A porcentagem de desconto (0-100)
Retorno: O preço após aplicar o desconto (Double)
Experimente você mesmo
fun calculateDiscount(price: Double, percentage: Int): Double {
// Escreva o código aqui
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores – Parte 1
Operadores aritméticosOperador móduloAtribuição aumentadaOperadores de comparaçãoRecapitulação – Matemática simples7Entrada e Saída Básicas
Função PrintlnTemplates de StringEntrada com ReadLineConversão de TiposRevisão - Anos até a AposentadoriaRevisão - Verdadeiro ou Falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoArgumentos nomeadosValores padrãoFunções de expressão únicaRecapitulação — função SigmaRecapitulação — função de validação2Variáveis
Val vs VarInferência de TiposNúmerosStringBooleanoConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores – Parte 2
Operadores lógicos – Parte 1Operadores lógicos – Parte 2Operadores lógicos – Parte 3Ternário com expressão ifRecapitulação – Lógica simples8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada11FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz3Nullabilidade
O que é Null SafetyTipos anuláveisOperador de chamada seguraOperador ElvisNoções básicas do desafio de funçõesAsserção de não nuloRecapitulação - Acesso seguro6Tomada de Decisões
Instrução IfIf - ElseIf como ExpressãoExpressão WhenWhen com IntervalosRecapitulação - Calculadora Simples9Laços de Repetição
Laço ForLaço WhileLaço Do-WhileBreakContinueIntervalos em LaçosLaço AninhadoRecapitulação - FatorialRecapitulação - Entrada Dinâmica12Fundamentos de Listas
List vs MutableListAcessando ElementosModificando ListasMétodos de ListaPair e TripleRecapitulação - Lista de ProdutosRecapitulação - Lista Invertida15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Kotlin