例如
object TimeHelpers {
def seconds(in: Long): Long = in * 1000L
}
import TimeHelpers._
class Base {
seconds(1000L)
}
// separate file
class Base2 extends Base {
// does not compile
//seconds(1000L)
}
我是否必须手动导入Base2,或者有办法自动执行此操作吗?
答案 0 :(得分:16)
没有这样的机制,对不起。
但是,一个技巧是使用特征继承而不是导入。这可以是对多个导入进行分组的有用方法。例如,trait Helpers1 {
def seconds(in: Long): Long = in * 1000L
}
trait Helpers2 {
def millis(in: Long): Long = in * 1000000L
}
class Base {
protected object helpers extends Helpers1 with Helpers2
}
// separate file
class Base2 extends Base {
// References to helper functions can be qualified:
helpers.seconds(1000L)
helpers.millis(1000L)
// Or, can import multiple helper traits with one line:
import helpers._
seconds(1000L)
millis(1000L)
}
另一种可能性是Base
继承Helpers1 with Helpers2
,但您可能希望这些方法为protected
。