Meine Mitarbeiter lassen mich sie nicht aus beiden Gründen benutzen. : (
Eine Leistungsüberlegung ist, dass die Methoden in einem Strukturtyp über Reflektion aufgerufen werden, was auf der JVM viel langsamer ist als ein normaler Methodenaufruf. Siehe diese Antwort und Kommentare für detaillierte Informationen.
>Ich habe festgestellt, dass ich, wenn ich Strukturtypen benötige, fast immer dafür verantwortlich ist, dass eine Bibliothek, die ich verwenden wollte, nicht richtig entworfen wurde (z. B. fehlende Superklassen in Fällen wie StringBuilder / StringBuffer).
Wenn Sie also Strukturtypen aus anderen Gründen verwenden möchten, könnte es sich um ein Entwurfsproblem handeln, das schwerwiegender ist als Konfigurations- oder Leistungsüberlegungen. Das Typensystem von Scala ist mächtig und die Verwendung von Strukturtypen ist ein bisschen wie "aufgeben", um es mit "normalen" Mitteln richtig zu machen. Also, wenn Sie etwas Code haben, der Strukturtypen "benötigt", versuchen Sie zu analysieren, warum es so ist, und vielleicht fragen Sie die Gemeinschaft, ob es verbessert werden kann ( Ссылка scheint ein guter Ort dafür zu sein, wenn Sie stecken bleiben.
BTW, jeder neigt dazu, eine Funktion, die er gerade "grokked", z. Anfänger Muster passen wie verrückt, sobald sie das Konzept bekommen, auch wenn es bessere Möglichkeiten gibt (z. B. im Falle von Option Funktionen wie map, flatMap, foreach ...).
Es hängt auch davon ab, wie viel Sie verwenden, M. Odersky und G. Dubochet haben einige Benchmarks in ihrem Bericht .
Tags und Links scala