为什么可以传递其他类型

软托运人

我有以下代码片段:

sealed trait Option[+A] {

  def map[B](f: A => B): Option[B] = this match {
    case None => None
    case Some(a) => Some(f(a))
  }

  def getOrElse[B>:A](default: => B): B = this match {
    case None => default
    case Some(a) => a
  }

  def orElse[B>:A](ob: => Option[B]): Option[B] =
    this.map(Some(_)).getOrElse(ob)

}

case class Some[+A](get: A) extends Option[A]
case object None extends Option[Nothing]

该函数orElse有一个ob类型为 的参数Option[B]在函数体中,我传递ob给函数,getOrElse但它需要一种类型B,这怎么可能?

因为B可以是任何类型?

jwvh

类型A在顶部标识一次。B另一方面,Type正在每个方法中单独标识/定义。

因此,如果orElse接收到Option[B]某个未知类型的anB并将其传递给getOrElsethen,就目前getOrElse而言,它将成为新的B.

这可能使一些更有意义,如果你使用过C,而不是BgetOrElse方法,并使用D替代BorElse方法。一切都会一样,但更容易看到非关系。

它类似于值参数。如果我们有一个方法f(x:Int) = g(x-1),则调用接收到的参数x该方法g(x: Int)=...还调用其参数,x但这并不意味着值相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么可以将其他类型的参数传递给函数?

来自分类Dev

为什么字典作为类的引用传递而其他类型被复制?

来自分类Dev

为什么函数可以返回字符数组,而不能返回其他类型的数组?

来自分类Dev

在TypeScript中,当调用函数时,为什么可以提示null参数具有其他类型?

来自分类Dev

为什么返回类型“null”(或任何其他类型)可以分配给返回类型“void”?

来自分类Dev

为什么快速整数类型比其他整数类型快?

来自分类Dev

为什么Partial接受其他类型的额外属性?

来自分类Dev

为什么我可以可变地借用Box中的单独字段,而不借用其他引用类型?

来自分类Dev

为什么F#Discriified Union无法让JSON.NET尊重其TypeConverter,而其他类型却可以呢?

来自分类Java

为什么可以从其他实例访问“私有”方法?

来自分类Dev

为什么作为引用类型的字符串可以为非null常量,而其他引用类型consts必须为null?

来自分类Dev

为什么数组有时通过值传递而不是其他时候传递?

来自分类Dev

为什么我们不能将除字符串以外的其他数据类型的数组传递给Main

来自分类Dev

如果我们可以简单地调用函数来实现,为什么要将函数作为参数传递给其他函数呢?

来自分类Dev

为什么自动类型无法与for语句C ++中的其他内置类型共存

来自分类Dev

为什么当 __add__ 不能时 list.__iadd__ 可以与其他可迭代对象类型一起使用?

来自分类Java

为什么我能投的对象?可以将它与其他对象做什么?

来自分类Dev

有什么方法可以将自定义的其他args传递给黄瓜并解析它们?

来自分类Dev

Laravel观察者-有什么方法可以传递其他参数?

来自分类Dev

为什么在动作参数中有时需要传递lambda而不是其他时间?

来自分类Dev

为什么在意图传递给其他活动时从 Parcelable 获得错误的价值?

来自分类Dev

为什么函数不像 JS 中的其他对象(对象、数组)那样作为参数传递是可变的?

来自分类Dev

是否可以将枚举类型作为参数传递并在其他函数中重用此类型?

来自分类Dev

为什么在golang的以下代码示例中switch匹配其他类型

来自分类Dev

为什么推定返回类型的模板不能在其其他版本中重载?

来自分类Dev

为什么删除的复制构造函数不允许使用多态类型的其他构造函数?

来自分类Java

为什么“定制的Enum构造函数”返回所有其他Enum类型的信息?

来自分类Dev

为什么布尔运算比numpy中的其他类型慢?

来自分类Dev

为什么我不能在RxJs 6中简化为其他类型?

Related 相关文章

  1. 1

    为什么可以将其他类型的参数传递给函数?

  2. 2

    为什么字典作为类的引用传递而其他类型被复制?

  3. 3

    为什么函数可以返回字符数组,而不能返回其他类型的数组?

  4. 4

    在TypeScript中,当调用函数时,为什么可以提示null参数具有其他类型?

  5. 5

    为什么返回类型“null”(或任何其他类型)可以分配给返回类型“void”?

  6. 6

    为什么快速整数类型比其他整数类型快?

  7. 7

    为什么Partial接受其他类型的额外属性?

  8. 8

    为什么我可以可变地借用Box中的单独字段,而不借用其他引用类型?

  9. 9

    为什么F#Discriified Union无法让JSON.NET尊重其TypeConverter,而其他类型却可以呢?

  10. 10

    为什么可以从其他实例访问“私有”方法?

  11. 11

    为什么作为引用类型的字符串可以为非null常量,而其他引用类型consts必须为null?

  12. 12

    为什么数组有时通过值传递而不是其他时候传递?

  13. 13

    为什么我们不能将除字符串以外的其他数据类型的数组传递给Main

  14. 14

    如果我们可以简单地调用函数来实现,为什么要将函数作为参数传递给其他函数呢?

  15. 15

    为什么自动类型无法与for语句C ++中的其他内置类型共存

  16. 16

    为什么当 __add__ 不能时 list.__iadd__ 可以与其他可迭代对象类型一起使用?

  17. 17

    为什么我能投的对象?可以将它与其他对象做什么?

  18. 18

    有什么方法可以将自定义的其他args传递给黄瓜并解析它们?

  19. 19

    Laravel观察者-有什么方法可以传递其他参数?

  20. 20

    为什么在动作参数中有时需要传递lambda而不是其他时间?

  21. 21

    为什么在意图传递给其他活动时从 Parcelable 获得错误的价值?

  22. 22

    为什么函数不像 JS 中的其他对象(对象、数组)那样作为参数传递是可变的?

  23. 23

    是否可以将枚举类型作为参数传递并在其他函数中重用此类型?

  24. 24

    为什么在golang的以下代码示例中switch匹配其他类型

  25. 25

    为什么推定返回类型的模板不能在其其他版本中重载?

  26. 26

    为什么删除的复制构造函数不允许使用多态类型的其他构造函数?

  27. 27

    为什么“定制的Enum构造函数”返回所有其他Enum类型的信息?

  28. 28

    为什么布尔运算比numpy中的其他类型慢?

  29. 29

    为什么我不能在RxJs 6中简化为其他类型?

热门标签

归档