yarv-dev:23
From: (Yukihiro Matsumoto) <matz ruby-lang.org>
Date: Mon, 17 May 2004 16:14:38 +0900
Subject: [yarv-dev:23] Re: initialize block local variables
まつもと ゆきひろです In message "[yarv-dev:22] Re: initialize block local variables" on 04/05/17, SASADA Koichi <ko1 atdot.net> writes: |> これはメソッドローカルにはなりませんが、実装は少しは楽にはな |> るでしょう。満足するほど楽になるかどうかは分かりませんが。 | | (ブロックパラメータ以外の)ブロックローカル変数を探さない |ですむ、くらいしか思い浮かびませんでした。クロージャのための |構造も従来どおりのものが必要になるでしょうし。 evalで増えたりしないのでより静的にできるとかを考えてました。 |1. 「重複」とは、 | |i=1 |iter{|i| | ... |} | | を許さない、ということでしょうか。 はい。 |2. ブロックパラメータの渡し方 | | ブロックパラメータへの値の渡し方は、現状の多重代入とほぼ |同様の渡し方を踏襲するのでしょうか。それとも、この部分も整理 |の対象になりますか。 | | それとも lambda で作った Proc か、ブロックか、で場合わけす |るような仕様になりますか。 ここはまだ決めていません。おそらくは「多重代入と同じだが、多 重代入が現状よりも整理される」のではないかと。 現状の多重代入は複雑怪奇なルールですが、新しいものは * return, yieldなどに複数の値を渡すとValuesオブジェクトを 作る。 * 複数の左辺値はValuesオブジェクトの各要素と対応する。 というルールになります。現状ではlambdaで作ったProcオブジェク トは引数の個数チェックが厳しいというルールになっていますが、 lambdaを予約語にしてProc(or Block)とLambdaを別クラスにしよう かと思っています。 | 新しく導入するキーワード引数もブロックパラメータに含まれる |のでしょうか。 気持ちとしてはlamdaを予約語にしてlambdaのパラメータだけキー ワード引数やブロック引数を受け付けるようにしたいのですが、 define_methodのようなメソッドのためには普通のブロックパラメー タにもこれらを含みたいんですよね。悩んでます。 |3. yield や Proc#call にブロックを渡すことを許すのでしょうか 許そうと思っています。 |4. キーワード引数の評価順序ってなんか決まってますか | | そもそもこのあたりの文法ってもう決まってます? 評価順序は基本的に左から右、上から下です。 文法は 定義側 def foo(a, b=15, *rest, c:val, **krest) ... end 呼び出し側 foo(1, 2, 4, *ary, c:44, k:42, **hash) です。 -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
15 2004-05-17 04:14 [ko1 atdot.net ] initialize block local variables 16 2004-05-17 08:38 ┗[matz ruby-lang.org ] 17 2004-05-17 10:37 ┣[ko1 atdot.net ] 20 2004-05-17 13:23 ┃┗[matz ruby-lang.org ] 22 2004-05-17 15:58 ┃ ┗[ko1 atdot.net ] -> 23 2004-05-17 16:14 ┃ ┗[matz ruby-lang.org ] 24 2004-05-17 16:58 ┃ ┗[ko1 namikilab.tuat.a] 25 2004-05-17 17:27 ┃ ┗[matz ruby-lang.org ] 26 2004-05-17 18:09 ┃ ┗[ko1 atdot.net ] 27 2004-05-17 18:38 ┃ ┗[matz ruby-lang.org ] 21 2004-05-17 13:45 ┗[nobu.nokada softhome]