[#47955] るびま記事募集:FiberとかSinatra/PadrinoとかBundlerとか — Makoto Kuwata <kwa@...>

桑田といいます。るびま編集部に入りました。

17 messages 2011/04/11

[#48016] 文字列を正規表現にマッチする部分と他の部分に分割 — "5.5" <5.5@...>

5.5 です。

12 messages 2011/04/28

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

From: "5.5" <5.5@...>
Date: 2011-04-21 00:10:29 UTC
List: ruby-list #47990
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

In This Thread

Prev Next