Scala возвращает значение параметра

Проблема в том, что я бы хотел, чтобы эта функция возвращала значение опции (в форме Option[None]) или Option[что-то], но она возвращает только Unit. Что мне не хватает?

  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

     }

person T.Simmari    schedule 20.09.2017    source источник


Ответы (2)


Вам не хватает = перед первым {. Методы, определенные без =, всегда возвращают Unit. Обратите внимание, что этот синтаксис на самом деле устарел именно потому, что это распространенная ошибка: https://issues.scala-lang.org/browse/SI-7605.

person Alexey Romanov    schedule 20.09.2017

вы должны указать тип, который он возвращает

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))

     }
}

попробуй не использовать var в scala я немного меняю код

person Hamuel    schedule 20.09.2017