2012-03-06 13 views
2

Rubyで#{...}の構文がどのように使われているかわかりません。Rubyでどのように#{...}構造体を使用していますか?

私は正確と呼ばれるこの#{...}機能であり、このいくつかの良好な作業例の人を知っているん何http://www.ruby-doc.org/core-1.9.3/Regexp.html

place = "tokyo" 
/#{place}/.match("Go to tokyo") 
    #=> #<MatchData "tokyo"> 

に正規表現の例で使用して見てきました。

本当に助けていただきありがとうございます。

ありがとうございます!

place = "Tokyo" 
puts "Go to #{place}" 

何:

+0

これは、二重引用符またはスラッシュで囲んだインラインRubyコード用です。 ''#{1 + 1} '' => '' 2 "' – fl00r

答えて

6

... 補間と呼ばれ、あなたはそれが表す値にプレースホルダを変換することができますされています#{...}構文は、それが含んでいるルビコードを実行し、その結果の文字列表現を返します。そして、その文字列はco nstructが表示されます。

もう一つの例:つまり

place = "Tokyo" 
puts "#{place} is a #{place.class} of #{place.length} characters" 

、あなたの例は同等です:

/tokyo/.match("Go to tokyo") 

この情報がお役に立てば幸いです。

1

#{...}は、特に有用であり、メタプログラミングでかなり使用されます。実行時にこれらのメソッドの名前を知らなくても、メソッドを動的にディスパッチするのに役立ちます。

if conf.rc and File.exists?(conf.rc) 
    YAML.load_file(conf.rc).each do |k,v| 
    conf.send("#{k}=" , v) 
    end 
end 

実行時まで、どのメソッドがディスパッチされるのかわかりません。 .send#{...}によって、メソッドを動的にディスパッチできます。例えば、上記のコードでは、conf.rcの値に応じて、異なるメソッドをディスパッチすることができます。

例はMetaprogramming Rubyから取られます。