繁体   English   中英

Ruby:$ 1是什么意思?

[英]Ruby: What does $1 mean?

我正在观看关于多态关联的RailsCast。 http://railscasts.com/episodes/154-polymorphic-association?view=asciicast

有三种不同的模型文章,照片和事件,每个都评论来自Comment.rb。 (article_id,photo_id和event_id各自的文章,照片和事件)。 在列出评论时,他有问题找出列出评论的3个模型中的哪一个,所以他在索引动作中这样做

def index
  @commentable = find_commentable
  @comments = @commentable.comments
end


def find_commentable
  params.each do |name, value|
    if name =~ /(.+)_id$/
      return $1.classify.constantize.find(value)
    end
  end
  nil
end

我的问题是,什么是$1

来自RubyTapas的Avdi Grimm表示

$ 1是一个全局变量,可以在以后的代码中使用:

  if "foobar" =~ /foo(.*)/ then puts "The matching word was #{$1}" end 

输出

“匹配的单词是吧”

简而言之,$ 1,$ 2,$ ...是一些全局变量,由一些特别涉及REGEX的ruby库函数使用,让程序员在后面的代码中使用这些结果。

有关 Ruby中可用的更多变量,请参见此处。

$1是从上面的正则表达式/(.+)_id$/匹配的组。 $1变量是括号中匹配的字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM