【问题标题】:How to get a list with the Typesafe config library如何使用 Typesafe 配置库获取列表
【发布时间】:2013-07-28 14:30:04
【问题描述】:

我正在 Scala 中尝试从 something.confTypeSafe 之类的配置文件中获取列表。

something.conf我设置了参数:

mylist=["AA","BB"]

在我的 Scala 代码中我这样做:

val myList = modifyConfig.getStringList("mylist")

简单的配置参数可以正常工作,但有人可以给我一个如何提取列表的示例吗?

【问题讨论】:

  • 你能澄清一下这个问题吗?查看 API,您的代码看起来不错。您应该在myList 中找到List[String]
  • 我猜你希望getStringList 的结果是Scala List。情况并非如此 - typesafe-config 是一个纯 Java 库,getStringList 返回 java.util.List 的实现。

标签: scala typesafe


【解决方案1】:

正如@ghik 所说,Typesafe Config 库是基于 Java 的,因此您会得到 java.util.List[String] 而不是 scala.List[String]。所以要么你转换成scala.List

import collection.JavaConversions._
val myList = modifyConfig.getStringList("mylist").toList

或者(可能不那么尴尬)您正在寻找一个 Scala 库。 tools wiki 至少链接到这些维护的库:

(免责声明:我不使用这些,因此您必须检查它们是否支持您的类型和格式)

【讨论】:

  • 我是 Scala 新手 :-) 你说得对,我正在将 java.util.List 与 scala.List 混合。 import collection.JavaConversions._ val myList = modifyConfig.getStringList("mylist").toList 成功了。谢谢,我会检查这些链接...
【解决方案2】:

作为记录,由于 Scala 2.12 JavaConversions 已弃用,因此您可以:

import collection.JavaConverters._
val myList: List[String] = modifyConfig.getStringList("mylist").asScala.toList

【讨论】:

    【解决方案3】:

    您可以尝试我的 scala 包装器 https://github.com/andr83/scalaconfig - 它支持直接从配置对象读取本机 scala 类型。在你的情况下,它看起来:

    val myList = modifyConfig.as[List[String]]("mylist")
    

    【讨论】:

      【解决方案4】:

      Scala 2.13开始,标准库通过scala.jdk.CollectionConverters提供Java到Scala的隐式列表转换:

      import scala.jdk.CollectionConverters._
      
      val myList: List[String] = conf.getStringList("mylist").asScala.toList
      

      这将替换已弃用的软件包 scala.collection.JavaConverters/JavaConversions

      【讨论】:

        猜你喜欢
        • 2016-11-27
        • 2021-05-14
        • 1970-01-01
        • 2018-06-13
        • 2014-08-03
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 2013-10-25
        相关资源
        最近更新 更多