首页 > 解决方案 > 嵌套在另一个列表中的结构中的随机列表

问题描述

使用以下代码:

[
  %Quizz{
    question: "L'unità d' Italia",
    answers: [
      %{answer: 1900, result: false},
      %{answer: 1861, result: true},
      %{answer: 1848, result: false},
    ]
  },
  %Quizz{
    question: "La Rivoluzione Francese",
    answers: [
      %{answer: 1789, result: true},
      %{answer: 1818, result: false},
      %{answer: 1766, result: false},
    ]
  },
  %Quizz{
    question: "La scoperta dell'America",
    answers: [
      %{answer: 1280, result: false},
      %{answer: 1500, result: false},
      %{answer: 1492, result: true},
    ]
  }
]

我想使用 3 个测验结构Enum.shuffle洗牌,并洗牌每个结构的答案列表。我能够对列表进行洗牌,但我正在努力更新每个结构的答案列表。我怎样才能做到这一点?

标签: elixir

解决方案


您可以打乱列表然后映射它,用answers打乱的版本替换每个字段

Enum.shuffle(list_of_quizzes)
|> Enum.map(fn(%{answers: answers} = quizz) -> 
    %{quizz | answers: Enum.shuffle(answers)}
end)

推荐阅读