From: "5.5" <5.5@...> Date: 2011-04-21T09:10:29+09:00 Subject: [ruby-list:47990] String#gsub への委譲 5.5 です。 受け取った引数とブロックを String#gsub へ丸投げするようなメソッドを 考えてみたのですが,うまくいきませんでした。 class S def initialize(str) @str=str end def gsub(re, &block) @str.gsub(re, &block) end end p S.new("a1a").gsub(/\d/){"<#{$&}>"} # => "a<>a" 調べたところ,与えたブロックの中では Regexp.last_match が nil でした。 Fowardable や SimpleDelegator を使ってみたりもしたのですが,同じ結 果です。 ブロックのスコープに関する理解が欠けているために解決できないのかな と思うのですが,どのようにすればいいのでしょうか? リファレンスマニュアルの String#gsub や $1 などを見ましたが分かり ませんでした。 -- 5.5@moji.gr.jp