有人可以解释我在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在范围内 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |