2017-09-20 2 views
0

Le prolbem est que je voudrais que cette fonction retourne la valeur de l'option (sous la forme de Option [None]) ou Option [quelque chose], mais elle ne renvoie qu'une unité. Qu'est-ce que je rate?Scala retournant la valeur de l'option

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 

    } 

Répondre

1

Il vous manque = avant la première {. Les méthodes définies sans = renvoient toujours Unit. Notez que cette syntaxe est réellement obsolète précisément parce que c'est une erreur commune: https://issues.scala-lang.org/browse/SI-7605.

0

vous devez spécifier le type, il retourne

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

    } 
} 

essayer de ne pas utiliser var dans scala je change un peu le code