What is Nostr?
ruto / ると
npub19zy…sfxh
2024-05-28 12:43:16

ruto on Nostr: ...

RubyのEnumeratorのnewに無限ループするブロックを渡してもそのEnumeratorにtake(10)とかすると無限ループにならずに停止する。

Enumerator::new do |y|
a = 0
loop do
y << a
a += 1
end
end.take(10)

でもbegin rescueで囲ってみても例外は投げられていないし、JavaScriptのgenerator的なものがRubyにもあるんだっけ、そういえばFiberとかあったなと思ってp Fiber.currentを入れてみても外と同じものが返ってくる。begin ensureで囲うとちゃんとensure部分が実行されるので大域脱出しているのは確か。
各LLMに聞いても上手い答えが返ってこないし、と思ったらそういえばRubyには例外とは別にthrow/catchなんてものがあったなと思い出した。
Author Public Key
npub19zyfvxjkfcyqml344k8uv5tmjgxjlnft0qcvw0mu870j4whfp65sq5sfxh