如何表达(隐式conv:String => A)作为视图绑定

Tim*_*ske 3 scala implicit-conversion implicits view-bound

我问自己什么是视图绑定相当于

(implicit conv: String => A)
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是简单地声明类型参数A,如下所示:

[String <% A]
Run Code Online (Sandbox Code Playgroud)

但Scala编译器抱怨"未找到:类型A".

有什么建议?

Kip*_*ros 8

- 修订后 -

语法[B <% A]实际上绑定了一个新类型B.所以

class Foo[A, String <% A]
Run Code Online (Sandbox Code Playgroud)

相当于

class Foo[A, String](implicit $conv: String => A)
Run Code Online (Sandbox Code Playgroud)

where String是一个任意类型的参数,而不是你想到的类.

我认为命名的隐式转换可能是你最好的选择,

class Foo[A](implicit conv: String => A)
Run Code Online (Sandbox Code Playgroud)

现在这里的类型String没有被遮蔽.

总结:视图边界是作为转化有用引入的类型参数,而不是所述类型参数.