2016-06-06 16 views
-1

Dies ist wahrscheinlich eine neue Frage. Beachten Sie, dass es ein if 1!=2 gibt, das nicht funktioniert, da die Funktion "fortfährt" druckt. Was stimmt nicht mit der Rückkehr?Spielen für Scala: Funktion gibt nicht zurück

def doSomething() = { 

     val json: JsValue = JsObject(Seq(
      "ret" -> JsString("1"), 
      "msg" -> JsString("Some Msg") 
    )) 

     if (1 != 2) 
     Ok(json)) 

     println("continues") 

     Ok(json) 
} 
+0

Put tritt Klammern auf ‚wenn‘ Aussage und/oder einrücken 'println'. Die 'println' wird als separate Aktion ausgewertet. –

+0

..und sogar danach, es wird immer noch "weiter" drucken, weil '1! = 2' wird immer 'wahr' –

+0

das ist der Punkt, den ich versuche zu machen. Da 1! = 2 ist, sollte es NICHT 'continues' drucken, da' OK() 'die Funktion in Play zurückgibt. – ps0604

Antwort

3

Wiedergabe In den Ok nicht wirklich die Funktion beendet, und Scala gibt nur das Ergebnis des letzten Prozesses, in Ihrem Beispiel, es gibt nicht die Ok innerhalb der if, weil es immer noch Code muss laufen, versuchen sie es mit dem Druck und dem zweiten Ok innerhalb eines else und diese Weise kann die Methode nicht, etwas anderes zu laufen hätte, wenn es die if

def doSomething() = { 

    val json: JsValue = JsObject(Seq(
     "ret" -> JsString("1"), 
     "msg" -> JsString("Some Msg") 
)) 

    if (1 != 2) { 
    Ok(json)) 
    } else { 
    println("continues") 

    Ok(json) 
    } 
} 
+0

Ich habe mehrere Validierungen, die jeweils mit 'Ok()' zurückkommen, wenn sie fehlschlagen. Es gibt keine Möglichkeit, die Funktion mit Ok abzuschließen? – ps0604

+0

eine Option wäre mit 'else if', könnten Sie versuchen, eine' return Ok' zu verwenden, aber es gibt eine Chance, dass es Ihnen eine Ausnahme gibt, je nachdem, wo Sie es ausführen – Edwin

Verwandte Themen