From: Shugo Maeda Date: 1999-01-31T00:33:54+09:00 Subject: [ruby-dev:4509] Re: permit to put a comma 前田です。 Koji Arai writes: > > 気持ちは分かるんですが,なんかかなり抵抗があります. > > そんな言語がほとんどないってのも理由ですが. > > あれぇ?「かなり」ですか?私はそれほどでもないので > すが。 僕もかなり抵抗があります。 > メソッドの引数追加と構造体のメンバ追加は、全然質が > 違うと思うんですよ。 だからこそ、Structのためだけにメソッドの引数の最後に ,を許すのに抵抗があるんです。 > そもそも構造体定義をメソッドで実装したというところ > からこの要望が出てしまってるので、他の言語に例がな > いのは仕方ないんじゃないでしょうか? Rubyの場合、Structは文法要素として独立に存在するわけ ではなくて、ライブラリレベルで実現されているわけで、 Structといえども普通のクラスと何ら変わりないわけですよね。 # 実装は変わりありますけど;-) そのStructのために他のメソッドにまで影響が出るような 文法変更をするというのは話が逆のように思います。 むしろStructは配列などに比べて重要度が低いために、完全 にライブラリレベルで実現されているのではないでしょうか。 実際僕は自分のプログラムでStructを使ったことはおそらく ないと思います。 # 試したことはありますが。 というわけで、Structは便利な場合もあるが、なくても別に 困らないものだ、というのが僕の認識なので、Structのため に他への影響があるような文法変更をするのには反対、とい うのが僕の意見です。 > 構文を変えることに抵抗があるようでしたら、百歩譲っ > て… > > # 引数がArrayの場合 > hoge_ary = Struct.new("Hoge", [ > :a, > :b, > :c, > ]) > > や、 > > # 引数がHashの場合 > hoge_hash = Struct.new("Hoge", { > :a => 1, > :b => 2, > :c => 3, > }) こちらについては賛成です。 ただ、本当のところを言うと、配列やハッシュの要素の最後に,が 許されるという仕様も、個人的にはあまり好みではなかったりします。 # 便利だというのはわかるんですが。 -- 前田 修吾 (mailto:shugo@netlab.co.jp)