我看到了例子,其中一个转换函数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 一起工作)
关于scala - 关于 Scala View 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526048/