Scala заменить, если еще с государственным шаблоном дизайна - PullRequest
0 голосов
/ 12 марта 2019

Вот мой код оператора if в Scala:

package calculator

class Calculator() {
  var num = 0.0
  var count = 0

  def displayNumber(): Double = {
    num
  }

}

def handle(): Unit = {
    if (calculator.num == 0.0){
        calculator.num = number
      }
    else{
        calculator.num = calculator.num * 10 + number
      }
    }

Как заменить if-else на шаблон состояния?

1 Ответ

2 голосов
/ 12 марта 2019

Вы имеете в виду Государственную монаду?

  import cats.data.State

  val number = 20.0

  case class Calculator(num: Double, count: Int)

  def state: State[Calculator, Unit] = for {
    calculator <- State.get[Calculator]
    _ <- State.set(if (calculator.num == 0.0) calculator.copy(num = number) else calculator.copy(num = calculator.num * 10 + number))
  } yield ()

  state.runS(Calculator(0.0, 0)).value // Calculator(20.0,0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...