2017-02-28 7 views
0

In meinem scala-Programm habe ich wenig Operation für Verständnis. Ich möchte innerhalb einer if Bedingung haben wie diese,scala für Verständnis Bedingung Betrieb

user <- userDao.findUser(authToken) 
haveDevice <- userDao.haveDevice(deviceId, deviceType) 
if (haveDevice) { 
    r <- userDao.addDevice(user.id, deviceId, deviceType) 
} 

Aber oben Code ungültig ist, wie dies zu tun? Danke

+0

Welcher Fehler es commits? –

Antwort

0

richtige Syntax für die Verwendung, wenn die Bedingung in einem für Verständnis ist wie unten gezeigt.

for { 
    user <- userDao.findUser(authToken) 
    haveDevice <- userDao.haveDevice(deviceId, deviceType) 
    r <- userDao.addDevice(user.id, deviceId, deviceType) if haveDevice 
} 

Ihre Annahme für das Verständnis arbeitet auf einer Zukunft, wenn die Bedingung, wenn nicht dann das gesamte Verständnis gibt ein ausgefallenes Zukunft mit Fehlern

java.util.NoSuchElementException: Future.filter Prädikat nicht zufrieden

+0

Was ist, wenn Benutzer <- userOpt, userOpt keine ist, gibt es NoSuchElementException zurück? –

+1

Wenn Sie für das Verständnis über eine Option statt über Future dann für keine Bedingungen arbeiten, erhalten Sie keine NoSuchElementException-Ausnahmen. stattdessen wird die Ausgabe des für das Verständnis keine sein .. –

Verwandte Themen