[前][次][番号順一覧][スレッド一覧][生データ]

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]