Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
Loops 而在Elixir中通过给变量重新赋值来循环_Loops_While Loop_Elixir - Fatal编程技术网

Loops 而在Elixir中通过给变量重新赋值来循环

Loops 而在Elixir中通过给变量重新赋值来循环,loops,while-loop,elixir,Loops,While Loop,Elixir,我想用Elixir对这个算法进行编码: var name = generate_name(); while (check_if_exists(name)) { name = generate_name(); } 我不能在Elixir中以同样的方式编码,因为必须有更为惯用和实用的方式。那我怎么做呢 长生不老药是一种药物。这意味着您不能修改变量的值,只能重新绑定它。因此,经典并不存在于长生不老药中 但是,您可以: def get_name do name = generate_name()

我想用Elixir对这个算法进行编码:

var name = generate_name();
while (check_if_exists(name)) {
  name = generate_name();
}
我不能在Elixir中以同样的方式编码,因为必须有更为惯用和实用的方式。那我怎么做呢

长生不老药是一种药物。这意味着您不能修改变量的值,只能重新绑定它。因此,经典并不存在于长生不老药中

但是,您可以:

def get_name do
  name = generate_name()

  case check_if_exists(name) do
    true  -> get_name()
    false -> name
  end
end
长生不老药是一种药物。这意味着您不能修改变量的值,只能重新绑定它。因此,经典并不存在于长生不老药中

但是,您可以:

def get_name do
  name = generate_name()

  case check_if_exists(name) do
    true  -> get_name()
    false -> name
  end
end

另一种可能是创建一个无限的名称流,然后找到可用的第一个名称:

Stream.repeatedly(&generate_name/0)
|> Enum.find(&check_if_exists/1)

另一种可能是创建一个无限的名称流,然后找到可用的第一个名称:

Stream.repeatedly(&generate_name/0)
|> Enum.find(&check_if_exists/1)

指南建议仅对3+子句使用
case
如果check\u如果存在(name),则执行:get\u name(),否则:name
。我可以很好地更改Elixirno中变量的值,无法更改变量的值-只能将其重新绑定到其他值。If/else只是上面带有true/false代码的case语句的宏。我选择了
case
而不是
If-else
,因为我更喜欢它,即使它是一个位于
case
之上的宏,就像@FredtheMagicWonderDog所说的那样,指导原则建议只对3+子句使用
case
如果check\u如果存在(name),则执行:get\u name(),否则:name
。我可以很好地更改Elixirno中变量的值,无法更改变量的值-只能将其重新绑定到其他值。If/else只是上面带有true/false代码的case语句的宏。我选择了
case
而不是
If-else
,因为我更喜欢它,即使它是一个位于
案例
之上的宏,就像@FredtheMagicWonderDog一样,saidOne方法是尝试将算法转换为映射/列表处理。
generate_name()
check_if_exists()
是否可以实现为处理映射/列表,比如可能/现有名称的映射/列表?在
map
或使用exto的数据库查询中,有两种方法可以向前和键查找。一种方法是尝试将算法转换为map/list处理。
generate_name()
check_if_exists()
是否可以实现为处理映射/列表,比如可能/现有名称的映射/列表?在
地图
或使用EXTO的数据库查询中进行两种方式的向前和键查找