使用下划线作为标识符时,隐式模式定义不绑定任何变量

问题描述

我有如下代码:

implicit val _ = new MyClass()

我收到以下错误:

Implicit pattern definition binds no variables

为什么?

我正在使用Scala-> 2.13.3,SBT-> 1.3.13和Java-> OpenJDK v14.0.2

解决方法

https://github.com/scala/scala/pull/8699

https://github.com/scala/bug/issues/11618

如果模式定义不绑定任何变量,则为 如果将其标记为隐式,可能是一个错误, 因为它没有引入隐式值, 或者它是模板语句,因为 意外地引入了模板成员。

请警告:

implicit val _ = 42
implicitly[Int]
,

在Scala 3(Dotty)中,我们可以像这样提供未命名的隐式值

scala> class MyClass(val x: Int)
// defined class MyClass

scala> given MyClass(41)
// defined object given_MyClass

scala> summon[MyClass].x + 1
val res0: Int = 42

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...