小编joe*_*oel的帖子

当方法尝试访问不存在的案例类成员时,Scala 隐式方法编译

我确实遇到了带有隐式方法的 Scala 编译器问题。情节很简单。隐式方法的任务是将案例类 A 的对象转换为案例类 B 的对象。隐式方法实现访问一个不存在的案例类成员。如果 case 类成员在 case 类 A 或 B(例如 foobar)中根本不存在,则编译器会抛出错误。如果案例类成员确实存在于案例类 B 中,则编译器不会抛出错误,即使我使用此名称(即成员 x)访问案例类 A。

我在 2.13.1 版中使用 Scala。目前,2.13.2 是最新版本。

以下代码更详细地显示了该场景。以下代码将导致编译器错误。

package Hokuspokus

object ImplicitMagic extends App {

  case class A(a: String, b: String, c: String)
  case class B(d: String, e: String, f: String, x: String)

  implicit def AtoB: A => B = a => B(a.a, a.b, a.c, a.foobar)

  def print(b: B): Unit = {
    System.out.println("Print" + b.d)
  }

  val a = A("foo", "bar", "asdf")

  print(a) …
Run Code Online (Sandbox Code Playgroud)

scala implicit scala-compiler

3
推荐指数
1
解决办法
71
查看次数

标签 统计

implicit ×1

scala ×1

scala-compiler ×1