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".
有什么建议?
- 修订后 -
语法[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没有被遮蔽.
总结:视图边界是作为转化有用从引入的类型参数,而不是到所述类型参数.