到目前为止,在我尝试做一个皮诺奇尔甲板的过程中,我已经
deck = for rank <- ['2','3','4','5','6','7','8','9','T','J','Q','K','A',], suit <- ['C','D','H','S'], blackwhite <- ['B','W'], do: %{suit: suit, rank: rank, blackwhite: blackwhite}
|> Enum.shuffle但是,混洗部分似乎会混洗贴图的内部部分,而不是贴图本身。但是,当将管道切换为
Enum.shuffle(deck)
我得到了预期的结果。想知道它的原因,以及是否有更好的方法。
发布于 2021-09-24 04:06:46
由于运算符的优先级,这是预期的行为。|>/2是一个运算符和operators precede宏调用。基本上,pipe与下面示例中的乘法运算符具有相同的优先级,这就是为什么它应用于映射,而不是应用于for/1调用的结果。
for i <- [1, 2, 3], do: i * 2要实现所需的功能,请使用括号。
deck =
(for rank <- [...], suit <- [...], blackwhite <- [...],
do: %{suit: suit, rank: rank, blackwhite: blackwhite})
|> Enum.shufflehttps://stackoverflow.com/questions/69307470
复制相似问题