我有一个配置文件beam-template.conf
,该文件具有不同的属性,例如
`beam.agentsim.agents.rideHail.keepMaxTopNScores = "int | 1"
beam.agentsim.agents.rideHail.minScoreThresholdForRepositioning = "double | 0.1"`
我正在尝试获取这样的属性值。
Configfactory.parseFile(new File(path/beam-template.conf)).entrySet().asScala.foreach { entry =>
if (!(userConf.hasPathOrNull(entry.getKey))) {
logString+="\nKey= " + entry.getKey + " ,Value= " + entry.getValue.render
}
}
所以问题在于值还包括它们的数据类型,例如
value = int | 1
value = double | 0.1
我只需要像value = 1
和value = 0.1
这样的实际值,而不需要包含它们的数据类型。因此,请提出一些解决方案,以便我可以从其值中删除数据类型
答案 0 :(得分:1)
我假设类型为'int | 1'是字符串。
然后您可以使用:
def toValue[A](value: String): A = {
val valStr = value.split("\\|").last.trim()
(value.split("\\|").head.trim() match {
case "double" => valStr.toDouble
case "int" => valStr.toInt
case other => valStr
}).asInstanceOf[A]
}
println(toValue[Int]("int | 1"))
println(toValue[Double]("double | 1.1"))
println(toValue[String]("hello"))
我将其更新为常规功能。我还看到|
必须转义。