Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Uso de funções ao invés de operadores

Olá, quero saber o motivo de ter sido usada a função plus() e a função subtract() na aula 1, ao invés de utilizar operadores comuns.

Obrigada!

2 respostas
solução

Oi Laura, tudo bem?

Essa dúvida faz todo o sentido, pois é possível realizar a operação que você comentou. Sendo assim, vou deixar os motivos por isso ser possível e por não ter abordado no curso.

1) A API do BigDecimal é nativa da linguagem Java que por sua vez, não possui por padrão esse tipo de operação, portanto, é comum de ser usar as funções plus() ou subtract().

Mas nesse caso entra uma questão que não quer calar que faz todo o sentido:

Por que no Kotlin é possível usar dessa maneira então?

Basicamente, o motivo de acontecer isso é justamente por uma feature do Kotlin conhecida como Operator overloading que permite transformar funções de classes em operadores aritméticos como você mesmo mencionou. Para mais detalhes, deixo a referência da documentação.

Em outras palavras, a classe BigDecimal possui algumas extensões que possibilitam essa chamada, ou seja, quando fazemos um código como este:

val n1 = BigDecimal(200)
val n2 = BigDecimal(100)
val soma: BigDecimal = n1 + n2

Por de baixo dos panos, o Kotlin chama a função plus() ou add() (que também realiza a soma)... Por isso é possível esse tipo de chamada. Inclusive, você pode verificar na própria documentação os possíveis operadores implementados pelo Kotlin para a classe BigDecimal por meio dessas extensões e o que eles na verdade significam.

2) Justamente por considerar um assunto mais aprofundado da linguagem e que faz muito sentido em casos mais avançados da linguagem, optei por não adicionar nesses cursos iniciais que focam mais na junção do Kotlin com Android.

Parabenizo você por trazer essa dúvida que é bem importante para quem quer avançar mais na linguagem, inclusive, vou aproveitar e adicionar um link de referência no último curso onde já deixo diversos links com conteúdos e referências para estudar após finalização do curso.

Se tiver mais dúvidas, fique à vontade :)

[]s

Obrigada Alex, muito completa e esclarecedora a sua resposta =)