看完Martin 关于反射和编译器的主题演讲后,我似乎无法摆脱这个疯狂的问题。马丁谈到了“(婚礼)蛋糕模式”,其中特征起着核心作用。我想知道,当我们已经拥有特征时,为什么我们还需要包?有什么package
可以做,什么trait
(至少在理论上)不能做?
我不是在谈论当前的实现,我只是想想象如果我们用特征替换包会是什么样子。在我的脑海里会是这样的:
- 少一个关键字(
package
不需要) - 不需要
package object
s
总结我所有的问题:
- 理论上是否可以从语言中删除包并改用特征。
- 我们将从这种变化中获得什么其他好处?(我在考虑一流的包和一流的导入,但是 mixin 组合是编译时的事情,虽然超级调用是动态绑定的)
- Java/JVM 兼容性是唯一的阻碍吗?
更新
Daniel Spiewak 在这个主题演讲中谈到依赖注入只是蛋糕模式可以做的所有事情的冰山一角。