Scala隐式搜索深度

Scala隐式搜索深度,scala,implicit,Scala,Implicit,一个简单的例子: class A class B class C object testobject { val a = new A implicit def b(a:A):B = new B implicit def c(b:B) = new C val b:B = a val c:C = a } 最后一行没有编译。我们定义了A=>B和B=>C隐式转换,但这并不意味着A=>C 如果能够让隐式转换层工作,那就太好了 我的特殊问题。太长而无法完全发布实际上是来自web框架

一个简单的例子:

class A
class B
class C

object testobject {
  val a = new A
  implicit def b(a:A):B = new B
  implicit def c(b:B) = new C
  val b:B = a
  val c:C = a 
}
最后一行没有编译。我们定义了A=>B和B=>C隐式转换,但这并不意味着A=>C

如果能够让隐式转换层工作,那就太好了

我的特殊问题。太长而无法完全发布实际上是来自web框架。我想做一些类似的事情:

A => Secure[A] => Format[A]
有以下几点

implicit def secure[A](a:A):Secure[A] = ???
implicit def format[A](sec:Secure[A]):Format[A] = ???
所以我想通过隐式魔术处理安全性和格式化,并且只有安全的输出才能格式化


有没有人发现了什么诀窍来实现这一点或类似的效果?

这个问题在这里得到了很好的回答:

简而言之,Scala不连锁隐式转换,它只寻找直接转换A=>B。但是,使用额外的隐式参数可以达到预期的效果