Ruby に慣れ始めた私は、今までにない機能に出会いました -- callcc
.
それが何のためにあるのかについての一般的な考えは理解しましたが、例を書き込もうとしたときに予期しない結果が得られました。
require 'continuation'
def callcc_func
i = 0
while true
c = nil
callcc {|x| c = x}
i += 1
puts i
return c if (i % 3) == 0
end
end
c = callcc_func()
puts
callcc_func.call
結果は無限ループです。なんで?
私はそれが次のようになると予想しました:
# for `c = callcc_func()` line
1
2
3
# callcc_func.call
4
5
6
#end here because of `return c if (i % 3) == 0`
PS
私の英語で申し訳ありませんが、ありがとうございます。