通配符导入,然后隐藏特定隐式?

2024-03-27

给定以下具有 2 个隐式的对象:

scala> object Foo {
     |  implicit def stringToInt(x: String) = 555
     |  implicit def stringToBoolean(x: String) = true
     | }
warning: there were two feature warnings; re-run with -feature for details
defined object Foo

我可以使用它们:

scala> def f(x: Int) = x
f: (x: Int)Int

scala> import Foo._
import Foo._

scala> f("asdf")
res0: Int = 555

scala> def g(b: Boolean) = b
g: (b: Boolean)Boolean

scala> g("asdfasdf")
res1: Boolean = true

然后,我尝试禁用stringToInt隐含的。

scala> import Foo.{stringToInt => _}
import Foo.{stringToInt=>_}

但显然,这不起作用。

scala> f("adsfasdf")
res2: Int = 555

通配符导入隐式后,是否可以隐藏它们?

基本上,我想使用所有Foo的隐式,减去一个,stringToInt.

注意-当然我可以简单地做import Foo.stringToBoolean只是,但是,对于我的场景,Foo有大约 25 个导入,我想使用其中的 24 个。因此,使用全部,然后减一更简洁。


REPL 只是近似从历史记录中导入什么,一种近似总是使用导入的隐式。

在普通代码中,您可以通过隐藏标识符来禁用隐式。

最好的镜头是:

scala> object X { val stringToInt = 0 }
defined object X

scala> import X._
import X._

scala> f("asdf")
<console>:20: error: type mismatch;
 found   : String("asdf")
 required: Int
       f("asdf")
         ^

or

scala> implicit val stringToInt = 0
stringToInt: Int = 0

这个想法是将遮蔽变量引入到当前行的 REPL 模板的范围中。

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

通配符导入,然后隐藏特定隐式? 的相关文章

  • 配置Scala工作表的工作目录

    我希望 Scala 工作表 和 Scala 解释器 的工作目录是 Eclipse 项目路径而不是 Eclipse 安装目录 我怎样才能 非编程方式 实现这一目标 我知道我可以使用System setProperty user dir 但恕我
  • 将字符串转换为枚举值的 Scala 安全方法

    假设我有枚举 object WeekDay extends Enumeration type WeekDay Value val Mon Tue Wed Thu Fri Sat Sun Value 我希望能够将 String 转换为 Wee
  • 在案例类中重载 unapply 方法:scala

    考虑下面的代码 case class User id Int name String object User def unapply str String Some User 0 str Scala 抱怨 错误 无法解析重载未应用 案例类
  • 从 scala 的 Type 获取 ParameterizedType?

    有用的是 scala 的 Universe typeOf 保留了类的类型参数 import scala reflect runtime universe case class X T TypeTag val t typeOf T e g S
  • Spark Scala 相当于 SKEW 连接提示

    Spark SQL 有一个可用的倾斜提示 请参阅here https docs databricks com spark latest spark sql skew join html relation columns and skew v
  • 如何将句子拆分为多个空格分隔的单词?

    下面的代码 val sentence 1 2 3 4 split 给我 Array 1 2 3 4 但我只想说 Array 1 2 3 4 当单词之间有多个空格分隔时 如何分割句子 使用正则表达式 scala gt 1 2 3 split
  • scala 贷款模式,可选函数参数

    我有一个贷款模式 该模式应用函数 n 次 其中 i 是递增变量 偶尔 我希望传入的函数能够访问 i 但我不想要求传入的所有函数都需要定义一个参数来接受 i 下面的例子 def withLoaner n Int gt op Int gt St
  • 获取有关 Groovy 函数的信息(名称、签名、主体代码)

    我有一个 Groovy 文件 其中包含一堆简单的函数 如下所示 useful functions def myFunc1 String arg println Hello arg def myFunc2 String arg println
  • 在 sbt 中定义自定义测试配置

    我需要在 sbt 中定义一个运行测试的自定义测试配置 但需要一些额外的设置 我一直在环顾四周 试图弄清楚如何做到这一点 但我似乎无法做到这一点 我想做的是这样的 gt test这将运行正常的测试任务并且 gt pipelinetest这与测
  • 使用 Akka 将文件从服务器流式传输到客户端

    基本上我想允许用户从服务器下载 csv 文件 假设服务器上已存在 CSV 文件 API 端点通过 GET export 公开 如何将文件从 Akka HTTP 服务器流式传输到客户端 这就是我到目前为止所拥有的 Service def ex
  • 为什么 Vector[Option[Int]] 上的 flatMap 其映射器函数结果不是 Vector[Option[Int]] 有效?

    例如 Vector Some 1 Some 2 Some 3 None flatMap n gt n 产生一个Vector 1 2 3 而不是给出错误 正如我在其他语言中看到的那样 flatMap当你有一个产生嵌套的映射器函数时使用 所以我
  • 凿子“Enum(UInt(), 5)”失败

    当我尝试使用 Chisel 构建 FSM 时 我使用了 Enum 如 Chisel 教程所述 然而 我遇到了这样的错误 my code val sIdle s1 s2 s3 s4 Nil Enum UInt 5 但是 当我执行时sbt ru
  • 作为单例集合的选项 - 现实生活中的用例

    标题几乎概括了这一点 Option作为单例集合有时会令人困惑 但有时它允许一个有趣的应用程序 我脑子里有一个例子 并且想了解更多这样的例子 我唯一的例子是运行for对的理解Option List T 我们可以执行以下操作 val v Som
  • 重载方法值与替代方法的聚合

    我有以下函数 但无法编译 private def save pea KStream String String Unit pea groupByKey aggregate gt folder String String value Stri
  • 通过Listener获取Spark thrift服务器查询中读取的行数

    我正在尝试为我们的 ST 服务器构建一个监控系统 到目前为止 诸如记录查询 检索的行 红色和花费的时间之类的事情都很好 我已经实现了一个自定义侦听器 我能够毫无问题地检索查询和时间 侦听SparkListenerSQLExecutionSt
  • 在 URL 中嵌入 ETag

    有关 Play 中资产指纹识别的问题 如何要求 Play 在 URL 中嵌入 ETag 而不使用第三方插件 例如 如果 css resource cssETag 为1234 那么它就会变成 css responsive 1234 css 相
  • 在 Scala 中定义具有多个隐式参数的函数

    如何定义具有多个隐式参数的函数 def myfun arg String implicit p1 String implicit p2 Int doesn t work 它们必须全部放入一个参数列表中 并且该列表必须是最后一个 def my
  • zip 样式 @repeat 嵌套形式

    repeat非常有用 然而 我遇到了嵌套表单的障碍 我需要制作一个比赛日程表 它有 2 个属性 日程数据 比赛日期 时间 地点 对手 和提交球队备注 例如 由于冬季风暴 1 月 7 日的比赛已移至1 月 9 日在 夏威夷 表单映射基于 ca
  • 这个错误是什么意思(SimpleHttpConnectionManager 被错误使用)?

    我正在尝试从 ElasticSearch 中读取数据到 Spark conf es resource sflow sflow es nodes ES01 es query some query rdd sc newAPIHadoopRDD
  • JavaFX 控制器如何访问其他服务?

    我将 JavaFX 2 与 Scala 一起使用 我有class Application extends javafx application Application它执行诸如读取应用程序配置等操作 然后它会启动主窗口 该主窗口需要连接到一

随机推荐