我有一个类,它将函数作为变量:
class Element[T](func: Seq[T] => Option[Double])
Run Code Online (Sandbox Code Playgroud)
我想要另一个构造函数:def this(func: Seq[T] => Double).如何Seq[T] => Option[Double]在Seq[T] => Double不知道功能是什么的情况下创建一个?
这很容易做Seq[T] => Option[Double]出来的Seq[T] => Double.做吧func andThen Option.apply.
问题是def this(f: Seq[T] => Double)你的主构造函数是不可能的Seq[T] => Option[Double].这些是相同的签名.一个巧妙的解决方法是使用dummyImplicit:
class Foo[T](f: Seq[T] => Option[Double]) {
def this(f: Seq[T] => Double)(implicit dummy: DummyImplicit) = this(
f andThen Option.apply
)
}
Run Code Online (Sandbox Code Playgroud)
这使得第二个构造函数的调用序列形式上不同,因此即使第一个参数类型与第一个参数类型相同,您仍然可以使用它.
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |