Da forma como foi feito no curso, está sendo executado um for
por toda a lista duas vezes. Porque não utilizar uma lógica como a de baixo? (desculpa o código estar em Inglês. Estou tentando praticar Inglês em todo lugar que consigo hehehe)
Poderia até ser usado para ensinar o when
que já é a segunda vez que vocês perdem a oportunidade de ensinar.
class ViewAbstract(private val view: View) {
fun calculateTotals(transactions: List<Transaction>){
var total = BigDecimal.ZERO
var revenue = BigDecimal.ZERO
var expense = BigDecimal.ZERO
for(transaction in transactions){
when(transaction.type){
Type.REVENUE -> {
total += transaction.value
revenue +=transaction.value
}
Type.EXPENSE -> {
total -= transaction.value
expense += transaction.value
}
}
}
view.card_total_abstract.text = total.efFormatCurrency()
view.card_revenue_abstract.text = revenue.efFormatCurrency()
view.card_expense_abstract.text = expense.efFormatCurrency()
}
}
A propósito, vocês também poderiam ter aproveitado esse momento para ensinar que no Kotlin dá pra trabalhar com o BigDecimal da forma como fiz. Vocês já ensinaram que lista[index]
é o mesmo que lista.get(index)
no Kotlin. É o mesmo tipo de coisa. Vocês poderiam ter ensinado. Isso ajudaria a abrir a mente do aluno a tentar outras coisas que fazem muito sentido, mas que o Java não permite.