我只是想看一个随机数。所以这里是随机库的an example straight out of the docs。我希望Random.generate
接受生成器和种子并返回包含随机值和新种子的元组,如:
generate : Generator a -> Seed -> (a, Seed)
-- Main.elm
import Random
seed0 = Random.initialSeed 31415
randomNumber = Random.generate (Random.int 0 10) seed0
main =
-- print result of randomNumber here
编译器错误显示两种类型不匹配:
-- TYPE MISMATCH ---------------------------------------------------- -----------
The 2nd argument to function `generate` is causing a mismatch.
5| Random.generate (Random.int 0 10) seed0
^^^^^
Function `generate` is expecting the 2nd argument to be:
Random.Generator a
But it is:
Random.Seed
The 1st argument to function `generate` is causing a mismatch.
5| Random.generate (Random.int 0 10) seed0
^^^^^^^^^^^^^^^
Function `generate` is expecting the 1st argument to be:
a -> b
But it is:
Random.Generator Int
我在这里缺少什么?
答案 0 :(得分:4)
您引用的文档版本是Core 1.0.0,它已经过时了。 Core的当前版本是4.0.5。 (docs for Random here)
您正在寻找的签名功能现在名为step
:
step : Generator a -> Seed -> (a, Seed)
所以你的重构代码看起来像这样:
import Html exposing (text)
import Random
seed0 = Random.initialSeed 31415
(randomNumber, nextSeed) = Random.step (Random.int 0 10) seed0
main =
text <| toString randomNumber
答案 1 :(得分:3)
这是我能想到的最短的例子。 因为它给出一个常量种子,它将返回相同的布尔值。
如果您需要在运行时生成随机数,那么您
必须使用生成Random.generate
的{{1}}
这样elm运行时就可以获得随机性。
在这种情况下,某种形式的Cmd
是必需的,因为它是运行Platform.Program
的唯一方法。
Cmd