From: "NAKAMURA, Hiroshi" Date: 2000-02-07T18:53:26+09:00 Subject: [ruby-dev:9141] Re: bang method returns string always なひです. 西さんに振った後,逃げてました.すいません. 西さんありがとうございます.やっぱり本物は違う... で,このメイルはbang methodの挙動の話題ではなく, メソッドチェインとデバッグ時の相性の悪さに関する話題です. > From: "Yukihiro Matsumoto" > Sent: Monday, February 07, 2000 1:58 PM > |・今の仕様で本当に困っていることがあります?ドキュメンテーショ > | ンの問題ではないのかな。bang methodの扱いは現状ぐらいが柔 > | 軟で良いかと感じてます。 > > 思わず gsub! のチェーンを作ってがっかりした経験は私にさえ何 > 度もあり、これは十分「困っている」と言えると思ってます。 Rubyの式は値を返す(つーか文は式,か)という特徴から考えて, メソッドチェインを好む人が多いというのは, 当たり前かもしれませんね. > |・なひさんと同じ理由で、メソッドチェーンあまり好きじゃないで > | す。メソッドチェーンってエラー追跡のために結局ばらしちゃう > | んですよね。 > > これはエラーメッセージがもっと適切であるべきという話になるよ > うに思います。引数情報とかも含まれてれば良いのかも。 なひがメソッドチェインを利用して困るのは,デバッガを使っている時です. 現状のdebug.rbは,構造的に,ファイル上の1物理(物理?)行上の 異なるメソッドコールを区別できません. 0% ruby-1.5.2 -r debug foo.rb Debug.rb Emacs support available. foo.rb:1:a = "abcde" (rdb:1) l # <= リストを表示 [-4, 5] in foo.rb => 1 a = "abcde" 2 p a.gsub!('e','d').gsub!('d','c').gsub!('c','b').gsub!('b','a') (rdb:1) s # <= 1ステップ実行 foo.rb:2:p a.gsub!('e','d').gsub!('d','c').gsub!('c','b').gsub!('b','a') (rdb:1) s # <= 1ステップ実行 "aaaaa" 0% # <= 抜けちゃったしくしく メソッドチェインを多用する人は,これをどのように避けてるんでしょう. 別にデバッガを使わなくても,printfデバッグ(pデバッグ)しようと思うと, 結局メソッドチェイン壊すしかないですよね. # 1.5系のdebug.rbは,今のところ(1.4系で既に見つかっている以外の) # 不具合にはぶつかってません > [ruby-list:20069] ## 1.4系でも見つかってる不具合,直さなくちゃ... -- NaHi, nakahiro, a.k.a. NAKAMURA, Hiroshi http://www.sarion.com Sarion Systems Research