Scala 返回选项值

Scala returning option value

问题是我希望此函数为 return 选项值(以 Option[None] 的形式)或 Option[something],但它仅 return是一个单位。我错过了什么?

  def intersection(another: Interval){
     var test: Option[Interval] = None
    if (this.isLaterThan(another) || another.isLaterThan(this)){
       test
    }
     else {
       val a = this.start.later(another.start)
       val b = this.end.earlier(another.end)
       test=Some(new Interval(a, b))
       test

     }

你应该指定它的类型return

def intersection(another: Interval): Option[Interval] = {
    if (this.isLaterThan(another) || another.isLaterThan(this)){
       None
    }
     else {
       val a = this.start.later(another.start)
       val b = this.end.earlier(another.end)
       Some(new Interval(a, b))

     }
}

尽量不要在 scala 中使用 var 我稍微更改一下代码

在第一个 { 之前,您还缺少 =。没有 = 定义的方法总是 return Unit。请注意,此语法实际上已被弃用,因为这是一个常见错误:https://issues.scala-lang.org/browse/SI-7605