Scala 导入库通配符

scala import library wildcard

我是 Scala 新手。请温柔点

下面的导入导入了 ml.

下的所有内容(每个 class、特征和对象)
import org.apache.spark.ml._

但不是

下的 ParamMap
import org.apache.spark.ml.param._

换句话说,对于下面的代码,如果我这样做:

import org.apache.spark.ml.param._
import org.apache.spark.ml._

class Kmeans extends Transformer {
 def copy(extra: ParamMap): Unit = {
   defaultCopy(extra)
}}

那么我没有导入错误,但是如果我评论 import org.apache.spark.ml.param._:

//import org.apache.spark.ml.param._
import org.apache.spark.ml._

class Kmeans extends Transformer {
 def copy(extra: ParamMap): Unit = {
   defaultCopy(extra)
}}

ParamMap 导入错误。

Question

为什么不包含这个 import org.apache.spark.ml.param.ParamMap import org.apache.spark.ml.param._

Scala 导入不是递归的 - import org.apache.spark.ml._ 意味着导入所有 classes 和字段 directlyml 包下而不是下面的那些它的子包。

由于 ParamMapml 的子包之一 (ml.param) 下,您必须导入该包或 ParamMap class 直接。