[#2023] Class Method の index — (Dezawa Shin-ichiro) <dezawa@...>

出沢です

13 messages 1997/02/02

[#2158] [Req] pack/unpack — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

14 messages 1997/02/18
[#2166] Re: [Req] pack/unpack — matz@... (Yukihiro Matsumoto) 1997/02/18

まつもと ゆきひろです.

[#2277] ruby 1.0-970228 available — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです.

16 messages 1997/02/28

[ruby-list:2056] Re: Methods.htm 作成 tool

From: matz@... (Yukihiro Matsumoto)
Date: 1997-02-05 03:11:53 UTC
List: ruby-list #2056
まつもと ゆきひろです.

In message "[ruby-list:2052] Methods.htm 作成 tool"
    on 97/02/04, (Dezawa Shin-ichiro) <dezawa@miya.fujifilm.co.jp> writes:
|
|[1  <text/plain; iso-2022-jp (7bit)>]
|出沢です

ちょっと機能アップしてますね.良いことだ.

しかし,

|    { token[3] = "Enum" , mdl="incModule" }  if token[3] == "Enumerable"
|    { token[3] = "Compar", mdl="incModule" } if token[3] == "Comparable"

これはちょっとまずいですねえ.動作はするでしょうけど,こうい
うことができると思っちゃう人が出そうで.これは

  条件が成立する時 { } の中を実行する

ようにみえますが,*違います*.これがやっていることは

  条件が成立する時にHashを生成する

です.生成時に式の評価を行いますから結果的に { } の中を実行
しているだけです.問題は

  * 無駄な連想配列が生成される
  * 式は偶数個でないとエラーが出る
  * 式しか置けない(文が置けない)

などです.こうことがやりたい場合は

    ( token[3] = "Enum" ; mdl="incModule" )  if token[3] == "Enumerable"

とか,

    begin token[3] = "Enum" ; mdl="incModule" end if token[3] == "Enumerable"

とか

    if token[3] == "Enumerable" then token[3] = "Enum" ; mdl="incModule" end 

とかが良いでしょう.
                                まつもと ゆきひろ /:|)

In This Thread