Scala 中的通配符导入对于增量编译是否不好?

2024-04-13

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

例如,如果对于一个新班级X,我只需要导入类A and B(并不是C)来自包pack,我会因为写这个而受到惩罚吗:

import pack._

而不是这个?

import pack.{ A, B }

假设A and B不依赖于C, would X使用通配符导入重新编译,而不是使用更具体的导入C变化,或者依赖性跟踪系统是否足够聪明,能够意识到这一点C不被使用X尽管有通配符导入?


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

除此之外,没有任何影响。如果您导入 pack._ 和 pack._ 中的某个任意类,并且不依赖于更改,则无需重新编译您的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala 中的通配符导入对于增量编译是否不好? 的相关文章

随机推荐