Ich bin verwirrt wie Scala Division durch Null behandelt. Hier ist ein REPL-Code-Snippet.Scala Division durch Null ergibt unterschiedliche Ergebnisse
scala> 1/0
java.lang.ArithmeticException:/by zero
... 33 elided
scala> 1.toDouble/0.toDouble
res1: Double = Infinity
scala> 0.0/0.0
res2: Double = NaN
scala> 0/0
java.lang.ArithmeticException:/by zero
... 33 elided
scala> 1.toInt/0.toInt
java.lang.ArithmeticException:/by zero
... 33 elided
Wie Sie im obigen Beispiel sehen können, je nachdem, wie Sie durch Null teilen, erhalten Sie eine der folgenden Möglichkeiten:
- „java.lang.ArithmeticException:/durch Null“
- "Double = NaN"
- "Double = Infinity"
Das Debuggen besonders eine ziemliche Herausforderung macht, wenn sie mit Daten umzugehen unbekannte Merkmale. Was ist der Grund für diese Herangehensweise oder gar eine bessere Frage, wie man in Scala einheitlich mit der Division durch Null umgehen kann?
Ich denke, das mit den verschiedenen Datentypen zu tun hat. Versuchen Sie immer dieselben Datentypen zu verwenden, wenn Sie andere, aber verwandte Berechnungen ausführen. Bsp .: Double, Int, etc – Titulum
Sie haben es vielleicht mit Daten unbekannter Eigenschaften zu tun, aber in einer statisch typisierten Sprache wie Scala haben Sie es nicht mit Daten des unbekannten Typs zu tun. –
@AlexeyRomanov Ich verstehe, was du meinst. Ich denke jedoch, die meisten Leute würden zustimmen, dass diese Art von Ansatz anfällig für einige sehr schmutzige Bugs sowie sehr mühsam in jeder arithmetischen Operation ist, die Sie schreiben. – Ahmedov