在增量编译方面Scala中的通配符导入是不是很糟糕?

Jea*_*let 16 import scala wildcard incremental-compiler

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

例如,如果对于一个新类X,我只需要从包中导入类AB(而不是C)pack,我是否会因此而受到惩罚:

import pack._
Run Code Online (Sandbox Code Playgroud)

而不是这个?

import pack.{ A, B }
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*Iry 8

有一点微小的影响,但你可能不会注意到它.影响是,当引用符号"Foo"时,编译器必须将"Foo"解析为完全限定名称.它可以查找"Foo"的范围受到通配符导入的影响.但这一切都是在内存中完成的,你几乎肯定不会注意到分辨率的微小差异,除非你在一个包中有成千上万个类的疯狂.

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