Ich habe vor kurzem Scala eine zweite Chance gegeben und begann mit dem Projekt, das ich immer implementiere (in funktionalen oder pseudo-funktionalen Sprachen): ein automatisierter Begründer für Aussagenlogik (und spätere Prädikatenlogik).Scala - Präfix Unäre Operatoren
Nun, ich habe versucht, die Schreibweise der Aussagenlogik in der Sprache selbst so hübsch wie möglich zu bekommen, und ich habe so weit gekommen - mit einer impliziten Konvertierung (String -> Atom):
("A" and "B") implies "C"
Die Funktionen "and" und "implicates" (und "or" und "equivalent") sind einfache Methoden, die den relevanten Fallklassenkonstruktor aufrufen. Wenn jedoch „nicht“ zur Durchführung, bekomme ich mit einem der beiden folgenden Bezeichnungen fest:
("A" and "B").not
Not("A" and "B")
Gibt es eine Möglichkeit Scala Trick zu akzeptieren die gewünschte:
not("A" and "B")
Vorzugsweise ohne die Klasse zu umbenennen "Nicht" zu "nicht", denn ich möchte es in Zukunft "¬" oder etwas anderes nennen.
Dank, ich wusste nicht, dass ich „statische Importe“ in Scala nutzen könnte - das mich auf jeder Seite mit einem obligatorischen Import verlassen würde, obwohl, die - zusammen mit der impliziten Konvertierung wäre eine Menge zusätzlichen Code für jede Verwendung. – wen
@Dennetik: Wenn Sie einfach alles in das Logic-Objekt einfügen, brauchen Sie 'logic._ importieren' nur, um Ihre Klassen zu verwenden. – sepp2k
Hätte ich nicht gedacht, ich muss mich immer noch an Scalas Freiheit gewöhnen, verglichen mit Java ... – wen