Как удалить тип данных из значения в конфигурационном файле с типом безопасности? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть файл конфигурации 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, вместо того, чтобы включать их тип данных.Поэтому, пожалуйста, предложите какое-нибудь решение, чтобы я мог удалить тип данных из их значений

1 Ответ

0 голосов
/ 22 ноября 2018

Я предполагаю, что тип '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"))

Я обновил это до общей функции.Я также видел, что | нужно сбежать.

...