我的同事不会让我在这两方面都使用它们。 :(
答案 0 :(得分:9)
性能考虑因素是结构类型中的方法是通过反射调用的,这在JVM上要比常规方法调用慢得多。有关详细信息,请参阅this answer and comments。
答案 1 :(得分:9)
我发现当我需要结构类型时,它几乎总是因为我想要使用的库设计不正确(例如在StringBuilder / StringBuffer之类的情况下缺少超类)。
因此,如果您出于其他原因需要使用结构类型,则可能是设计问题 - 这比配置或性能考虑更严重。 Scala的类型系统功能强大,使用结构类型有点像“放弃”以“正常”方式使其正确。因此,如果您有一些似乎“需要”结构类型的代码,请尝试分析为什么会这样,并且可能会询问社区是否可以改进(https://codereview.stackexchange.com/似乎是一个好的地方)如果你卡住了。
BTW,每个人都倾向于过度使用他刚刚“grokked”的功能,例如一旦他们得到概念,初学者模式匹配就像疯了一样,即使有更好的方法(例如在地图,平面地图,foreach等选项功能的情况下)。答案 2 :(得分:4)