2017-09-20 2 views
0

Das Prolbem ist, dass ich möchte diese Funktion Option Wert (in Form von Option [keine]) oder Option [etwas], aber es gibt nur eine Einheit. Was vermisse ich?Scala Rückgabe Option Wert

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 

    } 

Antwort

1

Sie fehlen = vor dem ersten {. Methoden, die ohne = definiert sind, geben immer Unit zurück. Beachten Sie, dass diese Syntax gerade deshalb veraltet ist, weil dies ein häufiger Fehler ist: https://issues.scala-lang.org/browse/SI-7605.

0

Sie den Typ angeben, sollte es zurückgeben

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

    } 
} 

versuchen nicht var in scala zu verwenden, ändern ich den Code ein wenig