代码之家  ›  专栏  ›  技术社区  ›  Mandroid

scala方法输出类型的Intellij提示

  •  0
  • Mandroid  · 技术社区  · 3 年前

    我用Intellij在scala程序中编写了一个方法,如下所示:

    def myMethod(c: Option[C]) = {
        val x = ...
        val y = ...
        c.filter(...)
         .map(_ => {
              (x,y) match {
                 case (a,b) => "val1"
                 case (c,d) => "val2"
                 case (_, _) => "val3"
              }
           })
    }
    

    Intellij提示此方法的输出类型为Option[String]。但正如我使用的filter方法,它可能返回None,那么这个提示是不是错了呢?

    0 回复  |  直到 3 年前
        1
  •  2
  •   jwvh    3 年前

    object None 延伸 Option[Nothing]

    Nothing 是一种“底部类型”,即它继承自所有内容。

    Option 在其类型参数上是协变的。

    也就是说 None 他是他的后裔 Option[X] 尽一切可能 X

    因此,两者之间的LUB(最小上限) Option[String]