Как использовать функцию в Scala для цикла - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть такой код:

case class State(state:Long=0,time:Long=0)

def funtionA(int a):Either[error, State]

var a = 123
val inloop = new Breaks
for (s <- funtionA(a) ) {
      if (s.state == 1) {
        println(s.state )
        println("ok")
        inloop.break()
      }
      else {
        println( s.state )
        println("not ok")

      }
    }

Как решить functionA просто запустить один раз? Мне нужно запустить funtionA(a) продолжать знать s.state хорошо.

1 Ответ

2 голосов
/ 16 апреля 2020

Способ сделать это на функциональном языке l oop с помощью рекурсивной функции:

 def loop(a: Int): Unit =
  funtionA(a) match {
    case Right(s) =>
      println(s.state)
      if (s.state == 1) {
        println("ok")
      } else {
        println("not ok")

        loop(a)
      }
    case Left(e) =>
      println(s"error $e")
  }


loop(123)

Однако похоже, что это опрос другого потока, что не очень хорошая идея. Посмотрите на использование чего-то вроде Future или Akka Actors для управления многопоточностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...