Kapitel 16. Überladen von Operatoren
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Bei einigen Dingen bin ich hin- und hergerissen, zum Beispiel bei der Überladung von Operatoren. Ich habe die Überladung von Operatoren aus persönlichen Gründen weggelassen, weil ich gesehen habe, dass zu viele Leute sie in C++ missbrauchen.
James Gosling, Erfinder von Java1
In Python kannst du den Zinseszins mit einer Formel wie dieser berechnen:
interest=principal*((1+rate)**periods-1)
Operatoren, die zwischen Operanden stehen, wie 1 + rate, sind Infix-Operatoren. In Python können die Infix-Operatoren mit jedem beliebigen Typ umgehen. Wenn du also mit echtem Geld arbeitest, kannst du sicherstellen, dass principal, rate und periods exakte Zahlen sind - Instanzen der Python-Klasse decimal.Decimal - und die Formel wird wie geschrieben funktionieren und ein exaktes Ergebnis liefern.
Aber wenn du in Java von float zu BigDecimal wechselst, um genaue Ergebnisse zu erhalten, kannst du die Infix-Operatoren nicht mehr verwenden, weil sie nur mit den primitiven Typen funktionieren. Das ist dieselbe Formel, die für BigDecimal Zahlen in Java codiert ist:
BigDecimalinterest=principal.multiply(BigDecimal.ONE.add(rate).pow(periods).subtract(BigDecimal.ONE));
Es ist klar, dass Infix-Operatoren die Lesbarkeit von Formeln verbessern. Die Überladung von Operatoren ist notwendig, um die Notation von Infix-Operatoren ...