加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

关于Scala中的观点的问题

发布时间:2020-12-16 10:07:26 所属栏目:安全 来源:网络整理
导读:我看到了一些例子,其中转换函数T = S作为隐式参数传递. Scala calls这个函数视图甚至提供了特殊的语法糖 – 视图绑定 – 对于那种情况. 但是我们已经进行了隐式转换!我可以用隐式转换替换这些视图(即作为隐式参数传递的转换函数)吗? ?我可以用隐含的转换
我看到了一些例子,其中转换函数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?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读