【问题标题】:How to implicitly pass class manifest for a return value如何隐式传递类清单以获得返回值
【发布时间】:2023-03-10 04:44:01
【问题描述】:

假设我在下面定义了通用函数:

def convert[R](json: String)(implicit m: Manifest[R]): R =
  parse(json).extract[R]

我不确定调用此函数的正确语法是什么?我试过了:

 convert(json).asInstanceOf[MyClass]

似乎可以正确编译,但是当我尝试提取 json 时出现异常。例如,我可以通过定义以下内容使其正常工作:

def convert[R](json: String)(cb: R => Unit)(implicit m: Manifest[R]) =
  cb(parse(json).extract[R])

然后执行以下操作:

 convert(json) { ret: MyClass => // }

但这不是合适的解决方案。

【问题讨论】:

    标签: json scala json4s


    【解决方案1】:

    试试convert[MyClass](json);这是显式指定类型参数的语法。允许通过将类型放在给定它的上下文中来推断类型,例如convert(json): MyClass,也可能有效。

    【讨论】: