【发布时间】:2015-09-28 05:34:12
【问题描述】:
我有以下:
counter = 0
try do
for _ <- Stream.cycle([:ok]) do
IO.puts "Counter is #{counter}"
counter = counter + 1
IO.puts "After counter: #{counter}"
if counter == 3 do
throw :halt
end
end
catch
:halt -> IO.puts "Finished processing"
end
根据我的阅读,我认为counter = counter + 1 会重新绑定变量,最终counter == 3 条件将为真。但是,我得到的输出是这样的:
Counter is 0
After counter: 1
Counter is 0
After counter: 1
Counter is 0
...
所以,基本上,计数器会回到初始值。感觉 for 内部的重新绑定就像一个局部变量一样工作,或者掩盖了第一个变量。我怎样才能使值保持不变(如果可能不递归)?
【问题讨论】:
标签: elixir