Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 如何在Elixir中实现双循环?_For Loop_Elixir - Fatal编程技术网

For loop 如何在Elixir中实现双循环?

For loop 如何在Elixir中实现双循环?,for-loop,elixir,For Loop,Elixir,如何在Elixir中实现双for循环 我感兴趣的是编写一个double for循环来比较naiveSort和quickSort实现 然后我意识到我甚至不知道如何用长生不老药写一个双for循环 那么,如何用Elixir编写双for循环呢?请记住,我正在尝试进行一次简单的排序…一种惯用的方法可能会使用如下列表理解: defmodule Quick do def sort([first | rest]) do sort(for(n <- rest, n < first, do:

如何在Elixir中实现双for循环

我感兴趣的是编写一个double for循环来比较naiveSort和quickSort实现

然后我意识到我甚至不知道如何用长生不老药写一个双for循环


那么,如何用Elixir编写双for循环呢?请记住,我正在尝试进行一次简单的排序…

一种惯用的方法可能会使用如下列表理解:

defmodule Quick do
  def sort([first | rest]) do
    sort(for(n <- rest, n < first, do: n)) ++
    [first] ++
    sort(for(n <- rest, n >= first, do: n))
  end

  def sort([]) do
    []
  end
end

iex(5)> Quick.sort [5,4,3,2,1]
[1, 2, 3, 4, 5]
defmodule快速执行
def排序([第一个|剩余])do
排序(for(n快速排序[5,4,3,2,1]
[1, 2, 3, 4, 5]
当然,快速排序非常适合于递归解决方案,因为算法是“对所有比我小的项进行排序,然后添加我,然后添加所有比我大的项”。这一点几乎用Elixir(和Erlang)表示


是一个列表理解。它基于生成器构建一个列表(erlang/elixir中使用了
n递归,而不是循环。elixir的Enum模块或erlang的:lists模块中有很多示例。我将此作为一个注释,因为我不知道答案,但这给了我今天上午的视角。我正在为一个工作项目学习elixir,我发现范式的巨大转变令人耳目一新。或者你可以使用理解。好像你的QuaseQuad的实现超过了数组中的每个元素两次,这是不必要的。列表理解可以用来创建2个单独的列表吗?也可以快速排序在列表中间随机选择一个元素,这是如何在灵丹妙药中完成的?