1

我想知道如何通过函数调用保留 $1、$~ 等的值。我正在编写一些接受正则表达式作为参数的函数,在调用函数后让这些函数可用会很有用(我想我可以将 MatchData 与另一个返回值一起传递出去,但这种方式看起来更像红宝石方式...)。

这是一个演示问题的简短脚本:

def foo()
    "abc123" =~ /(\d+)/
    puts "I see $1: #{$1}"
end

foo()
puts "I see $1: #{$1}"

对我来说,这打印出来:

I see $1: 123
I see $1: 

顺便说一句,这些类型的变量是否有一些规范的名称?仅仅称它们为“正则表达式全局变量”就很难在 Google 上搜索!

4

1 回答 1

0

如果我是你,我会$1从方法返回,而不是将它们存储在全局变量中。

def foo()
    "abc123" =~ /(\d+)/
    $1
end

puts "blah is #{foo}"
于 2013-11-10T08:35:07.050 回答