リフレクションとコンパイラに関する Martin の基調講演を見た後、このクレイジーな質問が頭から離れないようです。マーティンは、特質が中心的な役割を果たす「(ウェディング) ケーキ パターン」について、とりわけ語っています。疑問に思っているのは、すでに特性を持っているのに、なぜパッケージが必要なのですか? package
できること、trait
(少なくとも理論的には) できないことはありますか?
現在の実装について話しているのではなく、パッケージを特性に置き換えた場合のプログラミングがどのようになるかを想像しようとしているだけです。私の頭では、次のようになります。
- キーワードが 1 つ少ない (
package
は不要) - 必要
package object
ない
私のすべての質問を要約するには:
- 言語からパッケージを削除し、代わりに特性を使用することは理論的に可能ですか?
- この変更により、他にどのようなメリットが得られますか? (私はファーストクラスのパッケージとファーストクラスのインポートについて考えていましたが、スーパーコールは動的にバインドされていますが、ミックスインの構成はコンパイル時のものです)
- Java/JVM の互換性だけが邪魔になるのでしょうか?
アップデート
Daniel Spiewak は、この基調講演で、依存性注入は Cake パターンで実行できるすべてのことの氷山の一角にすぎないと語っています。