相关疑难解决方法(0)

避免Scala中的隐式def歧义

我试图创建从任何类型(比如Int)到String的隐式转换...

隐式转换为String意味着RichString方法(如反向)不可用.

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
Run Code Online (Sandbox Code Playgroud)

隐式转换为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
Run Code Online (Sandbox Code Playgroud)

使用两个隐式转换意味着重复的方法(如长度)是不明确的.

implicit def intToString(i: Int) = String.valueOf(i)
implicit def intToRichString(i: Int) = new RichString(String.valueOf(i))
100.toCharArray  // => Array[Char] = Array(1, …
Run Code Online (Sandbox Code Playgroud)

string scala implicit ambiguous

15
推荐指数
3
解决办法
4341
查看次数

标签 统计

ambiguous ×1

implicit ×1

scala ×1

string ×1