[#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:47991] Re: String#gsub への委譲

From: "NARUSE, Yui" <naruse@...>
Date: 2011-04-21 00:34:04 UTC
List: ruby-list #47991
2011年4月21日9:10 5.5 <5.5@moji.gr.jp>:
> 受け取った引数とブロックを 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@airemix.jp>

In This Thread