Я новичок в Эльмише. Ксамарин и сам Ксамарин.Я пытаюсь создать приложение, используя этот пример калькулятора .Основное отличие состоит в том, что в этом примере пользовательский интерфейс обновляется при вводе пользователем, а функция update
является чистой и просто оценивает следующее состояние модели:
let update msg model =
match msg with
| Clear -> Initial
| Digit digit ->
match model with
| Initial | Error | Result _ -> Operand (double digit)
| Operand op -> Operand (double (string op + string digit))
| OperandOperator (operand, operator) -> OperandOperatorOperand (operand, operator, double digit)
| OperandOperatorOperand (op1, operator, op2) -> OperandOperatorOperand (op1, operator, double (string op2 + string digit))
| Operator operator ->
match model with
| Initial | Error -> model
| Result operand // previously calculated result is now the first operand
| Operand operand | OperandOperator (operand, _) -> OperandOperator(operand, operator)
| OperandOperatorOperand _ -> calculate model msg
| Equals -> calculate model msg
Мне нужен другой сценарий: ввод пользователя hasnне влияет непосредственно на пользовательский интерфейс , вместо этого я сохраняю сообщения пользователя и оцениваю следующее состояние по расписанию , поэтому в ядре моего приложения я передаю updateUI: gameState -> unit
func:
let gameAgentFn (mailboxNetwork: MailboxNetwork) updateUi gameState cmd =
let timerAgent = timerAgent mailboxNetwork
match gameState.gameFrame with
| Frame field ->
let gameState = Game.updateGameState gameState cmd
timerAgent.Post Next
updateUi gameState
gameState
Проблема заключается вЯ не могу понять, какую функцию передать и как построить взаимодействие с этим проектом, поскольку, насколько я вижу, он ожидает, что я передам чистую функцию для оценки следующего состояния, а остальное делается под ним.