gpt4 book ai didi

function - 将类型信息传递给 Scala 中的函数

转载 作者:行者123 更新时间:2023-12-01 10:09:06 25 4
gpt4 key购买 nike

我有对 json 对象执行一些常见操作的代码,即提取。所以我想创建一个泛型函数,它采用期望类的类型参数,代码如下所示:

def getMessageType[T](json: JValue): Either[GenericError,T] = {
try {
Right(json.extract[T])
} catch {
case e: MappingException => jsonToError(json)
}
}

问题是如何将 T 信息传递给该函数?

最佳答案

如果你看the definition of extract : 你会看到它需要一个Manifest 隐含地:

def extract[A](json: JValue)
(implicit formats: Formats, mf: Manifest[A]): A

这通过将“类型”作为值来绕过 JVM 类型删除。为您案例,我认为你应该做同样的事情:

def getMessageType[T](json: JValue)
(implicit f: Formats, mf: Manifest[T]): T =
{
json.extract[T]
}

这个:

  1. 为您的方法提供隐式参数,调用者必须满足这些参数。

  2. 创建(相同的)隐式参数以将它们传递给 extract

关于function - 将类型信息传递给 Scala 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7654039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com