是否可以只使用一次导入自动导入多个包?

时间:2015-10-22 10:19:46

标签: scala

我有一些功能可以在一堆非常长的包中扩展SparkContext,对于spark-shell和Zeppelin(以及Jupyter ...),我希望用户提供一个单独的import-all

所以,我希望用户可以做类似

的事情
import myext._

在幕后,它会做

import something.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._
import something.different.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._
// more

这是可能的,如果是的话,怎么样?

或者我必须写一个像这样的“帮助对象”:

import something.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._
import something.different.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell._

package object myext {

  implicit class MyExtHelper(sc: SparkContext) {

    def somethingFromLib1 = sc.somethingFromLib1
    def somethingFromLib2 = sc.somethingFromLib2
    // more
  }
}

1 个答案:

答案 0 :(得分:1)

是的,最好的方法是提供一个帮助对象。请注意,它可以包含类型别名,如type Foo[A] = something.very.long.and.clumsy.uncomfortable.to.handle.on.a.shell.Foo[A]以及方法,隐式转换等。不幸的是,我没有办法(我知道)以这种方式提供通配符导入;你必须为你想要公开的包的每个成员添加成员到helper对象。