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

字符串 – 避免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 [字符串].长度

(编辑:李大同)

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

    推荐文章
      热点阅读