2011年4月21日

[ruby-list:47991] Re: String#gsub への委譲

2011年4月21日9:10 5.5 <5.5@xxxxx>:
> 受け取った引数とブロックを 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 などを見ましたが分かり
> ませんでした。

[ruby-dev:33403] での話ですかね。
ブロック引数で必ずしも回避できないのがアレなところ

--
NARUSE, Yui <naruse@xxxxx>


投稿者 xml-rpc : 2011年4月21日 09:34
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103205
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。