【发布时间】:2019-11-12 09:12:00
【问题描述】:
我有以下案例类。
case class CustomAttributeInfo[T,Y](
attribute:MyAttribute[_],
fieldName:String,
valueParser:T => Y){}
case 类采用三个值。
最后一个参数是一个函数,它将解析任何类型的输入并返回我们希望保留的输入部分。
(想象一下,仅举一个例子,我传入一个 jsonstring,转换为 json 对象,然后提取一个 Int)。
伴生对象将提供一系列我们可以传递给案例类的函数。这里显示的只是将输入作为字符串并将其作为字符串返回(最简单的示例)。
object CustomAttributeInfo {
val simpleString = (s:String) => s
}
我创建案例类如下:
CustomAttributeInfo(MyAttribute(var1, var2), name, CustomAttributeInfo.simpleString)
稍后,我将函数称为“valueParser”
customAttributeInfo.valueParser(k)
编译错误
错误:(366, 69) 类型不匹配; 找到:k.type(具有底层类型字符串) 需要:_$13 case Some(info) => Some((info.attribute, info.valueParser(k)))
我不是泛型专家(显然)。我做了一些阅读,但我还没有看到关于这样一个案例的讨论。任何建议和解释都将受到欢迎
【问题讨论】: