在 Scala 中扩展函数1

2024-05-20

在几个例子中,我看到一个对象或一个类扩展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(使用前将#替换为@)

在 Scala 中扩展函数1 的相关文章

随机推荐