我看到了一些例子,其中转换函数T => S作为隐式参数传递.
Scala
calls这个函数视图甚至提供了特殊的语法糖 – 视图绑定 – 对于那种情况.
但是我们已经进行了隐式转换!我可以用隐式转换替换这些视图(即作为隐式参数传递的转换函数)吗? ?我可以用隐含的转换来查看我无法做到的事情?
解决方法
我对你的问题的理解是,有什么好处
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)
是?那么视图的含义正是如此:类型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)
视图边界的另外两个用例:
>您可能只想在某些情况下从T转换为S,例如懒洋洋
(这与上面的情况相同:你基本上想与T合作)
>您可能希望链接隐式转换.看这篇文章:How can I chain implicits in Scala?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。