gpt4 book ai didi

scala - 我如何获取对象的类型并将其传递给 Scala 中的 asInstanceOf?

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

我有一个 Scala 类,它从 JOSN 模板文件中读取格式化信息,并从另一个文件中读取数据。目标是格式化为模板文件指定的 JSON 对象。我正在使用布局,但现在我想将输出类型设置为模板中的类型(即,如果我在模板中有一个字段值作为字符串,它在输出中应该是一个字符串,即使如果它是原始数据中的整数)。

基本上,我正在寻找一种快速简便的方法来执行以下操作:

output = dataValue.asInstanceOf[templateValue.getClass]

该行给我一个错误,类型 getClass 不是 Any 的成员。但是我一直没能找到在运行时给我一个变量类型的任何其他成员或方法。这可能吗?如果可能,如何实现?

澄清

我应该补充一点,在我的代码中,我知道我正在处理的只是一个键/值对。我想要的是值的类型。

具体来说,给定下面的 JSON 模板,我希望在输出时将名称转换为字符串,将年龄转换为整数,将薪水转换为小数,而不管它在原始数据文件中的显示方式如何 (它可以是所有字符串,年龄和薪水都可以是整数,等等)。我所希望的是一个简单的转换,不需要我进行模式匹配来专门处理每种数据类型。

示例模板:

people: [{  
name: "value",
age: 0,
salary: 0.00
}]

最佳答案

类型参数必须在编译时已知(类型符号),而templateValue.getClass只是一个普通值(Class类型),所以不能使用作为类型参数。该怎么做 - 这取决于你的目标,我还不清楚......但它可能看起来像

output = someMethod(dataValue, templateValue.getClass),

在该方法中,您可以根据 Class 类型的第二个参数进行不同的计算。

关于scala - 我如何获取对象的类型并将其传递给 Scala 中的 asInstanceOf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20167784/

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