我正在查看这个akka-http文档示例(链接到akka-http测试代码):
这实际上是来自github代码MarshalSpec.scala的测试。我的问题是,隐含的Marshaller在这里导入了什么?我在看进口,我找不到它?我尝试使用IntelliJ向我展示隐式导入,但我仍然无法解决这个问题。获取传递给Marshaller的隐式声明的import语句在哪里:
val entityFuture = Marshal(string).to[MessageEntity]
在第21行? 它叫
def to[B](implicit m: Marshaller[A, B], ec: ExecutionContext): Future[B] =
在Marshal.scala中传递一个隐含的m:Marshaller,我无法精确定位。
答案 0 :(得分:0)
SELECT NVL (id, 3)
FROM my_table
WHERE LEVEL = 1
CONNECT BY id = PRIOR successor
START WITH id = 3;
扩展了Marshaller
,它提供了来自String的编组。
但是,为什么Marshaller有自己的暗示呢?这是因为scala在类型参数的隐式范围中搜索implicits:Where does Scala look for implicits?
所以,Marshaller随身携带自己的Marshallers:)