gpt4 book ai didi

scala - <% 运算符的功能是什么?

转载 作者:行者123 更新时间:2023-12-01 09:28:04 24 4
gpt4 key购买 nike

最近看了implicit chain的例子, implicit def foo[C3 <% C](c: C) .我想我对 <% 和 (implicit c : C) 之间的区别感到困惑。

如果我写 implicit def bToC[C3 <: C](c: C)(implicit c3 : C3),它会给出编译错误,但为什么隐式 def 应该在范围内?

编辑:

谁能解释一下原因

implicit def aToB[A1 : A](a: A1)(implicit ev: Int => A1): B = new B(a.n, a.n)

implicit def aToB[A1 <: A](a: A1)(implicit ev: Int => A1): B = new B(a.n, a.n)

不工作?

提前致谢

最佳答案

[C3 <% C]表示 implicit ev: C3 => C .换句话说,一个转换 C3 的隐式函数至 C .所以所有C3范围内的对象可以是 C对象。

def intPlus1[A <% Int](a: A) = a + 1
// def intPlus1[A](a: A)(implicit ev: A => Int) = a + 1

implicit def string2int(s: String) = s.toInt // String => Int

intPlus1("100")
intPlus1("100")(string2int)
// the result bark bark

请注意 A <% A对于任何 A ,因为隐式函数 A => APredef 'ed,因此 B <% A如果B <: A也正如@rightfold 在评论中提到的那样。 :)

关于scala - <% 运算符的功能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997754/

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