在几个例子中,我看到一个对象或一个类扩展Function1
.
E.g. object Cash extends (CashProduct => String)
in Scala 的隐藏功能 https://stackoverflow.com/questions/1025181/hidden-features-of-scala?answertab=oldest#tab-top
(我想A => B
means Function1
)
延长期限有什么好处Function1
?
您提供的完整示例:
object Cash extends (CashProduct => String) {
def apply(p: CashProduct) = p.currency.name + "="
def unapply(s: String)(implicit ps: ProductService): Option[CashProduct] = {
if (s.endsWith("=")
Some(ps.findCash(s.substring(0,3)))
else None
}
}
表明OP想要获得语法上的好处apply
方法,它允许您创建一个实例调用Cash(...)
.
但为什么你真的想扩展一个函数呢?也许让我们看一个更好的案例,List[T]
.
如果我们查找长继承层次结构,我们会看到:
trait Seq[+A] extends PartialFunction[Int, A]
嗯,为什么Seq
extend PartialFunction[Int, A]
(反过来又继承了Function1[A, B]
?因为如果我们考虑一下,如果我传递一个 List[A]Int
,代表我正在寻找的元素的索引,它会(效率不高)返回给定索引处的元素(如果存在)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)