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

有人可以解释我在Scala中的隐式转换吗?

发布时间:2020-12-16 09:28:47 所属栏目:安全 来源:网络整理
导读:更具体地说,BigInt如何将convert int转换为BigInt? 在源代码中,它读取: ...implicit def int2bigInt(i: Int): BigInt = apply(i)... 如何调用此代码? 我可以理解这个其他样本:“Date literals”是如何工作的. 在. val christmas = 24 Dec 2010 被定义为
更具体地说,BigInt如何将convert int转换为BigInt?

在源代码中,它读取:

...
implicit def int2bigInt(i: Int): BigInt = apply(i)
...

如何调用此代码?

我可以理解这个其他样本:“Date literals”是如何工作的.

在.

val christmas = 24 Dec 2010

被定义为:

implicit def dateLiterals(date: Int) = new {
  import java.util.Date  
  def Dec(year: Int) = new Date(year,11,date)
}

当int get传递消息Dec并带有int作为参数时,系统会查找另一个可以处理请求的方法,在本例中为Dec(year:Int)

Q1.我对Date文字的理解是对的吗?

Q2.它如何适用于BigInt?

谢谢

解决方法

当提供的类型与预期类型不匹配时,Scala编译器会查找标记为隐式的范围内的任何方法,该方法将提供的类型作为参数,并返回期望的类型作为结果.如果找到,它会在中间插入对方法的调用.
在BigInt案例中,假设你有一个方法

doSomethingWithBigInt(d:BigInt)=....

你用整数调用它:

doSomethingWithBigInt(10)

由于类型不匹配,Scala编译器将生成:

doSomethingWithBigInt(int2bigInt(10))

假设隐式int2bigInt在范围内

(编辑:李大同)

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

    推荐文章
      热点阅读