我有一个数据对象:
case class Id(val value: String) extends AnyVal {
def bind[A](f: ((String) => A)): A = {
f(value)
}
}
我想将Id绑定到String.format
的第一个参数:
id.bind(template.format)
但我收到错误type mismatch: Seq[Any] => String => String
我相信这是因为template.format
可以采用可变数量的参数。
有没有办法可以像这样制作一个漂亮的可重复使用的绑定函数?
编辑:(我不想泄漏Id的val,因为我试图实现一个告诉不要问策略)
答案 0 :(得分:0)
如果你在调用中使用lambda来绑定,那么一切都应该没问题:
id.bind(s => template.format(s))
或者,您可以更改绑定功能以接受Seq[Any]
:
def bind[A](f: ((Seq[Any]) => A)): A = {
f(Seq(value))
}
或者:
def bind[A](f: (String*) => A): A = {
f(value)
}
id.bind(template.format) // Works!!!