我正在尝试创建从任何类型(例如,Int)到字符串的隐式转换...
隐式转换为 String 意味着 RichString 方法(如 reverse)不可用。
implicit def intToString(i: Int) = String.valueOf(i)
100.toCharArray // => Array[Char] = Array(1, 0, 0)
100.reverse // => error: value reverse is not a member of Int
100.length // => 3
到 RichString 的隐式转换意味着字符串方法(如 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, 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 方法?