From: Hideto ISHIBASHI Date: 2000-03-15T00:29:58+09:00 Subject: [ruby-list:21430] Re: 引数コピーとオブジェクト指向 石橋秀仁です。 > 石橋秀仁です。 > また、String#freezeを使って文字列を管理するなら、 > 非破壊的メソッドは不要 > ですね。 > a = String.new(...); a.freeze; b = a.dup; b.sub!(...); > と明示的にコピーしたほうが「安全」だと思います。この「安全」とは、 > 「人間同士のコミュニケーションにおける誤解を防ぐ」、という意味です。 と書きましたが、「オブジェクトの寿命がローカルスコープに限定」 されているという条件付きで、 'john'.concat( 'son' ).capitalize[0..3].downcase #=>'john' みたいな書きかたも好きです。Rubyっぽくて。 # ぼくはRubyをビジュアル系言語だと思っています。ルックス重視。 ConstantStringみたいなのは、ふつーのRuby感覚から言うと、 「堅苦しいオブジェクト指向」のためのスパイスなので、 通常は使う機会がないかも。 つまりこういうことです。「変更されるべきでない」としてConstantStringを 渡します。それが変更されたので、例外が上がります。この例外を補足します。 さて、どうする?作った相手に文句を言う? begin ... rescue TypeError sendmail( 'stupid@somewhere', 'I Hate Your Code!!' ) end 結局、「今そこにある危機」は何ら解決しない。「じゃあ意味ないだろ!」と 言われそうです (^^;; これは、プログラムの開発者と利用者が誰であるかに関係します。やはり、 メインテーマは「人間同士のコミュニケーションを助ける」ことです。 ぼくは、Rubyは、保守しながら運用する (使いながら書く) 言語だと思います。 使う人の手元にも必ずソースがあるわけですから。だから、こういう 「人為的なバグの素」、を発見するトラップを仕掛けてもいい。 # せっかくRubyを使っているのに、Cの「メモリ管理」と「文字列操作」 # の呪いを思い出したくない。しかし、疑心暗鬼と性悪説はRubyに似合わない。 # どっちも満足するには、「バグを見つけてすぐ直すための仕掛」が一番では? -- Hideto "rubyholic" ISHIBASHI