字符串 – 避免Scala中的隐含的def模糊
发布时间:2020-12-16 09:20:21 所属栏目:安全 来源:网络整理
导读:我正在尝试从任何类型(例如Int)创建一个隐式转换到一个String … 对String的隐式转换意味着RichString方法(如反向)不可用. implicit def intToString(i: Int) = String.valueOf(i)100.toCharArray // = Array[Char] = Array(1,0)100.reverse // = error: val
我正在尝试从任何类型(例如Int)创建一个隐式转换到一个String …
对String的隐式转换意味着RichString方法(如反向)不可用. implicit def intToString(i: Int) = String.valueOf(i) 100.toCharArray // => Array[Char] = Array(1,0) 100.reverse // => error: value reverse is not a member of Int 100.length // => 3 对RichString的隐式转换意味着String方法(如toCharArray)不可用 implicit def intToRichString(i: Int) = new RichString(String.valueOf(i)) 100.reverse // => "001" 100.toCharArray // => error: value toCharArray is not a member of Int 100.length // => 3 使用这两个隐式转换意味着重复的方法(如长度)是不明确的. implicit def intToString(i: Int) = String.valueOf(i) implicit def intToRichString(i: Int) = new RichString(String.valueOf(i)) 100.toCharArray // => Array[Char] = Array(1,0) 100.reverse // => "001" 100.length // => both method intToString in object $iw of type // (Int)java.lang.String and method intToRichString in object // $iw of type (Int)scala.runtime.RichString are possible // conversion functions from Int to ?{val length: ?} 那么,是否可以隐式转换为String并仍然支持所有的String和RichString方法? 解决方法
要么做一个巨大的代理类,要么吸收它,要求客户端消除歧义:
100.asInstanceOf [字符串].长度 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |