使用导入时如何在scala中隐藏类

使用导入时如何在scala中隐藏类,scala,import,Scala,Import,我使用下面的import语句希望禁用Option类,但看起来Option在范围中仍然可用。如何禁用它 scala> import scala.{Option=>_,Either=>_,_} import scala.{Option=>_, Either=>_, _} scala> val b:Option[Int]=Some(1) b: Option[Int] = Some(1) scala> 一般来说,这是unimpor

我使用下面的import语句希望禁用Option类,但看起来Option在范围中仍然可用。如何禁用它

scala> import scala.{Option=>_,Either=>_,_}
import scala.{Option=>_, Either=>_, _}

scala>  val b:Option[Int]=Some(1)           
b: Option[Int] = Some(1)

scala> 

一般来说,这是unimport(在其他情况下有效)的正确语法。我猜,
选项
总是由predef导入的。他们提到了一个禁用predef的实验选项(
-Yno-predef
),但我找不到关于这个开关的文档。它解决了您的问题吗?您的语法指示运行时从导入操作中排除Option和Option,但为时已晚:一旦导入类,它就位于作用域和Option中,就像Predef导入其他一些核心内容一样。正如@bluenote所建议的,解决方案是禁用Predef导入,这将停止该核心内容的初始导入,包括选项——尽管它不允许卸载内容,但您将获得clear-room范围。注释不正确@som snytt好吧,它们在修复部分是不正确的:您仍然无法从范围中取消对某些内容的影响,尤其是使用这种语法