まつもと ゆきひろです.

In message "[ruby-list:383] Re: bug report#3 and request#5"
    on 96/08/07, 石塚圭樹 <keiju / shljapan.co.jp> 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.が提供されるのが一番嬉しいという説もある(^^;;

私も嬉しいです.もっとも私はなにかあるとすぐソースを見てしま
うので,全部ソースに書いてあるのであまり不自由を感じていない
のですねえ.
                                まつもと ゆきひろ /:|)