いまいち理解していない…
実行結果は次の通り。
#!/usr/bin/env rhinofunction capture() {
return new Continuation();
}function loop(interrupt) {
var i;
var cout;for(i = 1; i <= 10; i++) {
print("Value of i: " + i);
if(i == interrupt) {cout = capture()}
if(cout) return cout;
}
}var cout = loop(5);
if(cout instanceof Continuation) {
print("continuation");
cout();
} else {
print("not continuation");
}
最後のブロックが2回呼ばれているのが変な感じ。
Value of i: 1
Value of i: 2
Value of i: 3
Value of i: 4
Value of i: 5
continuation
Value of i: 6
Value of i: 7
Value of i: 8
Value of i: 9
Value of i: 10
not continuation
あんまりきれいなコードじゃなけど、使い方はあってんのかな。
「if(i == interrupt) {return capture()}」とするとうまくいかないのは、元のコードにもどったら即returnだからか?
追記
capture()から、どうやって最上位まで戻るかが問題かな…