gpt4 book ai didi

scala - 为什么 Scala 库避免动态绑定(bind)?

转载 作者:行者123 更新时间:2023-12-01 23:44:53 25 4
gpt4 key购买 nike

<分区>

如果我在编写库,我会习惯性地这样写 Option:

abstract class Option[+A] {
def map[B](f: A => B): Option[B]
}

case object None extends Option[Nothing] {
override def map[B](f: Nothing => B): Option[B] = None
}

case class Some[+A](a: A) extends Option[A] {
override def map[B](f: A => B): Option[B] = new Some(f(a))
}

注意为 map 实现使用多态性。然而,map 的真正实现完全在 Option 类中,它看起来像这样:

def map[B](f: A => B): Option[B] =
if (isEmpty) None else Some(f(this.get))

我声称我的实现更简洁(请参阅别处多态性的优点)并且可能更快。在 Either 中,在类似情况下使用类型匹配而不是 if,让我想起你看到 C 语言的人在使用 Java 时使用的 switch 语句.有趣的是,Try 中的类似实现遵循我的 OOP 学派。所以我猜想在 Option 中选择了一个更短的解决方案。还有其他原因吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com