Random.int
не возвращает Int
, но Generator Int
.Затем вы вызовете Random.generate
, чтобы превратить этот Generator
в Cmd
, который затем вызовет вашу функцию update
с сгенерированным значением.
Одна из характеристикВяз в том, что все функции pure , что означает, что одни и те же входы всегда приводят к одинаковым выходам.Поскольку каждый раз, когда вы вызываете функцию, вы запрашиваете другое значение, вам нужно передать эту команду во время выполнения, которая может обработать нечистоту запроса (это то же самое, что происходит, когда вы хотите связаться свнешний мир через HTTP или JavaScript).См. пример Random
в Руководстве по вязу для получения более подробной информации.
В качестве альтернативы, вы можете сразу получить значение из Generator
, если вы готовы предоставить начальное число, используемое для вычисления случайного значения.Вы можете использовать Random.step
, который принимает Generator
и Seed
и производит значение и следующего семени, которое вы можете подаватьвернуться в step
, если вам нужно несколько значений.Вы, вероятно, захотите сделать это только в том случае, если полезно иметь возможность «воспроизвести» ваши случайные значения, так как удерживать Seed
довольно сложно.В противном случае, просто используйте generate
, чтобы создать Cmd
.