[#380] bug report#3 and request#5 — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
1 message
1996/08/06
[ruby-list:384] Re: bug report#3 and request#5
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-08-07 09:51:44 UTC
List:
ruby-list #384
まつもと ゆきひろです.
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.が提供されるのが一番嬉しいという説もある(^^;;
私も嬉しいです.もっとも私はなにかあるとすぐソースを見てしま
うので,全部ソースに書いてあるのであまり不自由を感じていない
のですねえ.
まつもと ゆきひろ /:|)