gpt4 book ai didi

scala - 来自 trait 的隐式解析

转载 作者:行者123 更新时间:2023-12-01 00:51:32 25 4
gpt4 key购买 nike

我有一个类似于以下情况的用例:

trait A {
implicit val x = "hello"
}

class B {

// somehow bring x into scope here???

def run(x: Int)(implicit y: String) = y + x
}

println((new B).run(3))

我知道我需要带 x在 B 的隐式范围内的 trait 中定义。我已经尝试了以下内容:
# attempt 1 #
class B extends A { .... } /// doesn't work

# attempt 2 #
class B extends A {

val x1 = implicitly[String] /// doesn't work either

def run(x: Int)(implicit y: String) = y + x
}

请解释我在这里遗漏了什么(或者,指出我可以研究的相关理论主题,对 Scala 来说相当新)。

最佳答案

将整个代码包装在一个对象中并扩展 trait Aclass B :

  object P {
trait A {
implicit val x = "hello"
}
class B extends A {
def run(y: Int) = y + x
}
def f = println(new B().run(3))
}

输出 :
scala> P.f
3hello

关于scala - 来自 trait 的隐式解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31072596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com