gpt4 book ai didi

scala - 关于 Scala View 的问题

转载 作者:行者123 更新时间:2023-12-01 07:44:56 25 4
gpt4 key购买 nike

我看到了例子,其中一个转换函数T => S作为隐式参数传递。斯卡拉 calls此功能view甚至提供了特殊的语法糖——view bound ——对于那种情况。

但是我们已经有了隐式转换!我可以更换这些views (即作为隐式参数传递的转换函数)具有隐式转换? ?我可以做什么 views我不能用隐式转换做什么?

最佳答案

我对你的问题的理解是,有什么好处

case class Num(i: Int)
implicit def intToNum(i: Int) = Num(i)

def test[A <% Num](a: A): Int = a.i
test(33)

超过
def test2(a: Num): Int = a.i
test2(33)

是的? View 的含义正是这样:类型 T 可以被视为另一种类型 S。您的方法或函数可能首先要处理 T。一个例子是Ordered:
def sort[A <% Ordered[A]](x: A, y: A): (A, A) = if (x < y) (x, y) else (y, x)

sort(1, 2) // --> (1,2)
sort("B", "A") // --> (A,B)

View 边界的另外两个用例:
  • 您可能只想在某些情况下从 T 转换为 S,例如懒洋洋
    (这在某种程度上与上述情况相同:您基本上想与 T 一起工作)
  • 您可能想要链接隐式转换。看到这个帖子:How can I chain implicits in Scala?
  • 关于scala - 关于 Scala View 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526048/

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