我正在查看一个提供类的隐式实现的 Scala 宏。此类将字段值映射转换为案例类。宏可以在这里找到,这是它背后的解释。
目前,该实现忽略了输入映射中提供的冗余字段。我想添加一个类似于fromMap
如果输入映射具有冗余条目时会引发异常的方法,但我不确定我是否理解得足够好。
我的理解是toMapParams
andfromMapParams
是接受输入并对其应用Map
或应用 Companion 对象的 Apply 方法的表达式。
因此,fromMapParams
应该修改以将冗余值输出为字符串列表,格式如下:
case class CaseClassRedundantFieldException[T]
(redundantFields: List[String], cause: Throwable = None.orNull)
(implicit c: ClassTag[T])
extends Exception(s"Conversion between map of data-fields to ${c.runtimeClass.asInstanceOf[T]} failed"
+ "as redundant fields were provided: $redundantFields",
cause)
我想我需要简单地拥有类似的东西:
def fromMap(map: Map[String, Any]): $tpe = {
val redundant vals: fields diff $map
if(vals.size > 0){ CaseClassRedundantFieldException(vals) } //(these two lines don't have the right syntax.)
$companion(..$fromMapParams )
}
我怎样才能做到这一点?