我有一个对象,其中有很多隐式函数。我现在想为几种日期格式定义一些隐式:例如,
Figure
我想遍历此列表并生成如下函数:
val dateFormats = Seq("dd/MM/yyyy", "dd.MM.yyyy")
如何解析函数名称?我希望函数名称对于列表中的每个条目都是唯一的!
有什么想法吗?我可以使用宏吗?
答案 0 :(得分:4)
如果您创建多个相同类型CsvFieldReader[DateTime]
的隐式对象,它们将产生歧义,并且隐式对象将无法解析。
隐式名称无关紧要,其类型无关紧要。
答案 1 :(得分:0)
因此,即使看起来很丑,这也是一个可行的实现!
implicit def dateTimeCSVConverter: CsvFieldReader[DateTime] = (s: String) => Try {
dateFormats.map {
case format => try {
Some(DateTimeFormat.forPattern(format).parseDateTime(s))
} catch {
case _: IllegalArgumentException =>
println(s"Date format $format incompatible, will try the next available format")
None
}
}.distinct.collectFirst {
case elem if elem.isDefined => elem.get
}.get
}