ささだです.

Yukihiro Matsumoto wrote:
> 条件としては、lambda でなく iseq->arg_rest が -1 でなく、
> iseq->arg_post_lenがセットされていない時にはかならず
> rb_ary_new4()またはrb_ary_new()が呼ばれます。

 iseq->arg_rest が -1 でない,とは,rest 引数がある,という話です.
|a, *b| の b の部分だから,配列を作っています.

> 先程のwfのプログラムだと
> 
> data.scan(RE) { |ongoing| counts[ongoing[0]] += 1 }

== disasm: <ISeq:block in <main>@../trunk/test.rb>======================
== catch table
| catch type: redo   st: 0000 ed: 0025 sp: 0000 cont: 0000
| catch type: next   st: 0000 ed: 0025 sp: 0000 cont: 0025
|------------------------------------------------------------------------
local table (size: 2, argc: 1 [opts: 0, rest: -1, post: 0, block:
-1] s3)
[ 2] ongoing<Arg>

 これを見ると,arg_rest は -1 のようです.

-- 
// SASADA Koichi at atdot dot net