【问题标题】:Define a generic trait with a function that returns a collection of types使用返回类型集合的函数定义通用特征
【发布时间】:2017-02-25 02:01:45
【问题描述】:

我正在尝试创建一个 Scala 特征,用作许多解析器的基本特征。我有许多案例类将存储解析的数据集。所有这些案例类都扩展了 Parseable 特征。

有些类会返回

Array[C <: Parseable]

其他

Dataset[C <: Parseable]

如何定义 Parser trait 以使 parse() 函数返回上述任一数据结构?

【问题讨论】:

  • 您能否详细说明一下所有这些案例类都扩展了 Parseable 特征。?你能举一个解析器的具体例子吗?扩展可解析特征的案例类对我来说有点不自然。
  • 我会试试的!我有许多带有管道分隔数据的不同文本文件。每个文件都需要以不同的方式进行解析,因此我正在尝试创建一组解析器,每个解析器都将扩展 Parser 特征。文件解析的最终结果将是一个包含解析数据的案例类。每个案例类都扩展了可放松的特征。由于各种原因,解析器生成的案例类列表可能是 Array 或 Spark 数据集,因此需要通用返回类型。我想确保返回的列表只能是 Parseable 的子类型。

标签: scala


【解决方案1】:
trait Parser[A[_], B <: Parseable]{

      def parse(s:String): A[B]

}

【讨论】:

  • 谢谢!我一直在努力弄清楚如何将它应用到我的解析器代码中,最后想出了以下内容: object DemographicParser extends Parser[Array, Patient] { def parse(filename: String)(implicit sparkSession: SparkSession): Array[Patient] = ...
猜你喜欢
  • 2019-08-04
  • 2018-03-18
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2014-06-01
相关资源
最近更新 更多