Scala 定义一个扩展PartialFunction的对象,直接用cases实现
我对Scala很陌生,但我已经很喜欢它了。我读过关于部分函数的教程和文章。我想要实现的是有一个扩展PartialFunction[…,…]的对象,并直接用案例定义它,而不需要定义isDefinedAt和应用方法 比如说Scala 定义一个扩展PartialFunction的对象,直接用cases实现,scala,partialfunction,Scala,Partialfunction,我对Scala很陌生,但我已经很喜欢它了。我读过关于部分函数的教程和文章。我想要实现的是有一个扩展PartialFunction[…,…]的对象,并直接用案例定义它,而不需要定义isDefinedAt和应用方法 比如说 val partialfuncval : PartialFunction[Int,Boolean] = { case 1 => false } 是分部函数的有效定义。但是为什么我不能写呢 object PartialFunctionClass extends Pa
val partialfuncval : PartialFunction[Int,Boolean] = {
case 1 => false
}
是分部函数的有效定义。但是为什么我不能写呢
object PartialFunctionClass extends PartialFunction[Int,Boolean] {
case 1 => false
}
??这将取消定义isDefinedAt和apply的需要,并使编写某些类型的类(由我正在使用的库预定义)变得更容易。这些选项之一是否足够 选项1
abstract class DelegatingPartialFunction[-T,+R](underlying: PartialFunction[T,R]) extends PartialFunction[T,R] {
def apply(t: T) = underlying.apply(t)
def isDefinedAt(t: T) = underlying.isDefinedAt(t)
}
然后:
选项2
trait DelegatingPartialFunction[-T,+R] extends PartialFunction[T,R] {
val underlying: PartialFunction[T,R]
def apply(t: T) = underlying.apply(t)
def isDefinedAt(t: T) = underlying.isDefinedAt(t)
}
然后:
我知道,这将不允许定义这个类的其他成员,但在这个特殊情况下,它实际上会使事情变得更容易。我应该申请这个功能吗?或者这在某种程度上是可以实现的,我不知道?
trait DelegatingPartialFunction[-T,+R] extends PartialFunction[T,R] {
val underlying: PartialFunction[T,R]
def apply(t: T) = underlying.apply(t)
def isDefinedAt(t: T) = underlying.isDefinedAt(t)
}
object PartialFunctionClass extends DelegatingPartialFunction[Int,Boolean] {
val underlying = {
case 1 => true
}
}