From: matz@... (Yukihiro Matsumoto) Date: 1996-08-07T18:51:44+09:00 Subject: [ruby-list:384] Re: bug report#3 and request#5 まつもと ゆきひろです. In message "[ruby-list:383] Re: bug report#3 and request#5" on 96/08/07, 石塚圭樹 writes: | |けいじゅ@SHLジャパンです. |foo, *bar = 1, 2, 3 |foo, bar, *baz = 1, 2, 3 | |があるので | |*foo = 1, 2, 3 | |もありかなと思っただけです. 対称性からはその方がよさそうですね.ただ,以前のドキュメント にあるような lhs ',' [lhs ','..] ['*' lhs ] '=' expr [',' expr ..] ルールでは表現出来ないんですよね. |でも, 多重代入はなかなか微妙な仕様ですね(^^;; | |foo = 1, 2, 3 |*foo = 1, 2, 3 | |はNGで | |foo, = 1, 2, 3 | |は, foo == 1 | |foo = [1, 2, 3] | |は, foo == [1, 2, 3] | |となるわけですね. そうです.左辺にコンマがあるものが多重代入です.あ, *foo = 2 にはコンマが無い…. |>|2. Array#append |全然テストしなかったでしょう(^^;;; 確実に暴走するよ!! そのようです.お恥ずかしい. |なるほど, 前者が lisp の append に近くて 後者が nconc に近いわけね. そうですね.そういう説明で分かる人ばかりだと嬉しいのですが, なかなかそうも行きません. |>|3. print File.stat("/etc") |inspectの存在は知っています. となるとStructの中身が見たいというのではなく,to_sの定義はか くあるべきという話でしょうか. |print の定義を見ると そのオブジェクトの文字列表現(to_s)を印刷するとなっ |ていますよね. 構造体の文字列としての表現は, メンバ名と値の組みではなか |ろうかと思ったわけです. つまり, Hash見たいな感じでの表現ですね. Hashと |違って, メンバの並びが常に一定ならば, 値だけを並べてもらっても構いませ |ん. to_sというメソッドはもともとあるオブジェクトを*無理矢理*文字 列にした結果を返すというメソッドです.で,人間に理解しやすい 形式の文字列に変換するメソッドとしてinspectを別に用意してい るわけです. というわけでStructの文字列表現はStructの種別くらいで十分で, 要素を見たければinspectを使ってくれ,というのが今までの考え なのでした. というわけで,Structのto_sによる文字列表現を変更する必然性を いまいち感じていないんですけど,なにか理由があるんですかね. ちなみにStructのメンバの並びはいつも一定です. # いや,printでそのままstatの結果が見れないというのは十分な # 理由であるかも知れんなあ. |>|4. fail/rescue |いわんとすることは分かるのですが... そのエラーにおいてどのようなメッセー |ジが出てくるのかマニュアルとかないですよね. あった方が良いですけど,無いですねえ. |そうですね. 特に機能を拡張しろとはいわないのですが, 以下のようなリクエ |ストがあります. | |1. エラーメッセージをパターン化してほしい. | |例えば, | | クラス名:メソッド名:エラー名* | |などの用にです. 現在でもそのようになっているような気もします. ただ, ク |ラス名がないので, つけた方が良いのではと思います. なってないですね.しかし,「ファイル名:行番号:メソッド名」は 変数 $@ の方に格納されています.エラーが発生した場所はこれで 特定できるので,これ以上は必要ないのでは? |2. エラー名* について, 本当は文字列とのマッチングをとるのではなくて, | IDがついているとさらにベストです. perlの $! は数字コンテキストで評価すると errno を返すように なっていますね. |その他に, クラス全体で一意のエラーIDを割り振るというてもありますね. こ |の方が良いかも知れません. これはこれで便利なことかも知れませんが,エラーIDを一意に管理 することの面倒さを考えると「お気楽な」rubyの性格に合わないか も知れません.やはり手軽に使えるのがウリですから,例外を宣言 しないと例外を使えないとかいうのはちょっと…. |3. |これはドキュメントに関するリクエストです. | |各メソッド毎に発生する可能性のあるエラーの種類をドキュメント上リストアッ |プして下さい. これはあると良いですね.これはいつかやります.ただ,perlでも これが出来たのはperl5になってからですし,明日出来るというも のでないことは理解してください. |# 3.が提供されるのが一番嬉しいという説もある(^^;; 私も嬉しいです.もっとも私はなにかあるとすぐソースを見てしま うので,全部ソースに書いてあるのであまり不自由を感じていない のですねえ. まつもと ゆきひろ /:|)