[ruby-dev:24203] $~の代替手段

From: Shugo Maeda <shugo@...>
Date: 2004-09-01 06:48:41 UTC
List: ruby-dev #24203
前田です。

先日ささださんが松江に来られた時に、「$~はあまりスマートでないので
できれば使いたくないが、現状では代替手段がない」という話をしました。
# Regexp.last_matchは記法が違うだけで本質的には変わらないので。

Common Lisp流の多値を導入して、正規表現を使うメソッドの返り値や
ブロックパラメータにMatchDataインスタンスを追加してしまうというのは
どうでしょう。

pos, m = "foo boo".index(/o/, 4) #  pos => 5, m => $~

"foo boo".gsub(/(.)oo/) do |s, m|
  # s => $&, m => $~
end

ここで、

x = 1, 2 # x => 1

だとすると、今までのコードもそのまま動くのではないかと思います。

pos = "foo boo".index(/o/, 4)    #  pos => 5

"foo boo".gsub(/(.)oo/) do |s|
  # s => $&
end

-- 
前田 修吾

In This Thread

Prev Next