scala для понимания с оператором if приводит к ошибке компиляции, которая не понята - PullRequest
0 голосов
/ 13 января 2020

получая ошибку при попытке применить оператор после «если» в for-yield. непонятно почему, я видел похожие примеры в других местах

value map is not a member of Long
      c <- f3

при попытке скомпилировать этот код

def f1() : Try[A]
def f2() : Try[B]
def f3() : Long

val result = for {
              a <- f1
              b <- f2
              if b.status == successcode
              c <- f3 // apply once a and b succeeded, returns a Long , unused result , tried without c<- and directly just f3 but similar syntax error
            } yield a 

1 Ответ

1 голос
/ 13 января 2020

Синтаксис <- используется для map некоторой коллекции, но f3 не возвращает коллекцию. f3 просто возвращает значение, поэтому используйте =, чтобы присвоить это значение результату:

val result = for {
          a <- f1
          b <- f2
          if b.status == successcode
          c = f3
        } yield a 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...