Ich portiere einen C-Code nach Scala, der Fließkomma-Arithmetik ausgiebig nutzt. Ich habe den folgenden Code in Scala basierend auf einem Kopieren / Einfügen der C-Version geschrieben:
%Vor%Das Ergebnis dieser Berechnung ist geringfügig von dem, was die C-Version erzeugt. Wenn ich jedoch den Ausdruck in runde Klammern schließe, wie folgt:
%Vor%Der resultierende Wert stimmt genau mit der C-Version überein. Es scheint, dass die Reihenfolge der Operationen unterschiedlich sein muss, wenn es runde Klammern gibt, wenn nicht, aber ich verstehe nicht, warum das einen Unterschied machen würde. Irgendeine Idee was hier vor sich geht?
Es liegt an der Semikolon-Inferenz. Probe ( //;
- abgeleitete Semikolon):
Und mit Klammern:
%Vor%Oder mit Tailing "+":
%Vor%Die Regeln der Semikolon-Ableitung
Eine Zeilenendung wird als Semikolon behandelt, es sei denn, eine der folgenden Bedingungen ist erfüllt:
Die fragliche Zeile endet mit einem Wort, das als Ende einer Anweisung nicht zulässig ist, wie z. B. ein Punkt oder ein Infix-Operator.
Die nächste Zeile beginnt mit einem Wort, das keine Anweisung starten kann.
Die Zeile endet innerhalb von Klammern (...) oder Klammern [...], da sie sowieso nicht mehrere Anweisungen enthalten können.
Tags und Links scala