16

在 Scala 中,从增量编译器(Eclipse 中的 sbt、sbt、IntelliJ)的效率和速度的角度来看,使用通配符导入是不是很糟糕?它是否会对这些增量编译器决定在发生更改时重新编译的方式产生不利影响?

例如,如果对于一个新的 class X,我只需要从 package导入 classesAB(而不是) ,我会因为写这个而受到惩罚:Cpack

import pack._

而不是这个?

import pack.{ A, B }

假设A并且B不依赖于C, 将X使用通配符导入重新编译,而不是在C更改时使用更具体的导入重新编译,或者依赖跟踪系统是否足够智能以实现尽管通配符导入C不使用它?X

4

1 回答 1

8

有一个微小的影响,但你可能不会注意到它。其影响是,当引用符号“Foo”时,编译器必须将“Foo”解析为完全限定名称。它可以查找“Foo”的范围受通配符导入的影响。但这一切都是在内存中完成的,除非你在一个包中有数千个类这样疯狂的东西,否则你几乎肯定不会注意到分辨率速度的如此微小差异。

除此之外,没有影响。如果您导入 pack._ 和 pack._ 中的一些任意类,您不依赖更改,那么您的文件将不必重新编译。

于 2012-07-02T15:53:54.947 回答