Scala:如何在函数变量上应用函数?
我有一个类,它将函数作为变量:Scala:如何在函数变量上应用函数?,scala,Scala,我有一个类,它将函数作为变量: class Element[T](func: Seq[T] => Option[Double]) 我想要另一个构造函数:def this(func:Seq[T]=>Double)。如何在不知道函数是什么的情况下,用Seq[T]=>Double创建Seq[T]=>Option[Double]选项[Double]很容易。 只需执行func和第二个选项。应用 问题是,当主构造函数是Seq[t]=>选项[Double]时,您不能使用def这个(f:Seq[t]=>
class Element[T](func: Seq[T] => Option[Double])
我想要另一个构造函数:
def this(func:Seq[T]=>Double)
。如何在不知道函数是什么的情况下,用Seq[T]=>Double
创建Seq[T]=>Option[Double]
选项[Double]很容易。
只需执行func和第二个选项。应用
问题是,当主构造函数是Seq[t]=>选项[Double]
时,您不能使用def这个(f:Seq[t]=>Double)
。这些是相同的签名。使用dummyImplicit
是一个巧妙的解决方法:
class Foo[T](f: Seq[T] => Option[Double]) {
def this(f: Seq[T] => Double)(implicit dummy: DummyImplicit) = this(
f andThen Option.apply
)
}
这使得第二个构造函数的调用顺序在形式上有所不同,因此即使第一个参数类型与第一个参数类型相同,您仍然可以使用它。很容易将Seq[T]=>选项[Double]
设置为Seq[T]=>Double
。
只需执行func和第二个选项。应用
问题是,当主构造函数是Seq[t]=>选项[Double]
时,您不能使用def这个(f:Seq[t]=>Double)
。这些是相同的签名。使用dummyImplicit
是一个巧妙的解决方法:
class Foo[T](f: Seq[T] => Option[Double]) {
def this(f: Seq[T] => Double)(implicit dummy: DummyImplicit) = this(
f andThen Option.apply
)
}
这使得第二个构造函数的调用顺序在形式上有所不同,因此即使第一个参数类型与第一个参数类型相同,您仍然可以使用它。Ok,但是否仍有方法进行我正在寻找的转换?Ok,但是否仍有方法进行我正在寻找的转换?