16

Scalaでは、インクリメンタルコンパイラ(sbt、Eclipseのsbt、IntelliJ)の有効性と速度の観点から、ワイルドカードインポートを使用するのは悪いことですか?これらのインクリメンタルコンパイラが変更の場合に何を再コンパイルするかを決定する方法に悪影響を及ぼしますか?

たとえば、新しいクラスの場合、クラスをXインポートするだけで、パッケージから(ではなく)インポートする必要がある場合、これを作成するとペナルティが発生しますか?ABCpack

import pack._

これの代わりに?

import pack.{ A, B }

に依存しないと仮定するAと、変更時に、より具体的なインポートではなく、ワイルドカードインポートを使用して再コンパイルされますか、それとも、依存関係追跡システムは、ワイルドカードインポートにもかかわらず使用されないことを理解するのに十分スマートですか?BCXCCX

4

1 に答える 1

8

小さな影響が1つありますが、おそらく気付かないでしょう。影響は、シンボル「Foo」への参照がある場合、コンパイラーは「Foo」を完全修飾名に解決する必要があるということです。「Foo」を検索できる範囲は、ワイルドカードのインポートの影響を受けます。しかし、それはすべてメモリ内で行われ、1つのパッケージに何千ものクラスが含まれているようなクレイジーなものがない限り、解像度速度のこのような小さな違いに気付くことはほとんどありません。

それ以外は影響ありません。pack._およびpack._内の変更に依存しない任意のクラスをインポートする場合、ファイルを再コンパイルする必要はありません。

于 2012-07-02T15:53:54.947 に答える