2014-05-14 48 views
-1

我知道這可能是一個非常基本的問題,但我正在努力尋找一個明確的答案。在Ruby中使用這個,#{}是什麼意思?它有什麼作用?Ruby中的{{}是什麼意思?

謝謝

+4

我不知道你爲什麼問這個問題。 Google的基本信息會提供給您。閱讀[here](http://www.ruby-doc.org/core-2.1.1/doc/syntax/literals_rdoc.html#label-Strings)。或者在Stacoverflow本身。看到這個[搜索](http://stackoverflow.com/search?q=%5Bruby%5D+%22%23%7B%7D%22) –

+2

@ArupRakshit你不能谷歌'#{}',你可以? – Stefan

+1

是的,我無法谷歌#{}。感謝大家的幫助,這麼快雖然:) – Robbo

回答

4

它用於字符串內插:(wikipedia, ctrl+f "ruby"

apples = 4 
puts "I have #{apples} apples" 
# or 
puts "I have %s apples" % apples 
# or 
puts "I have %{a} apples" % {a: apples} 

的輸出將是:

I have 4 apples 

String interpolation, Definition:

在Ruby,串內插是指雙面打印的能力,引用的字符串來執行Ruby代碼,並用該代碼的評估替換部分字符串(用#{...}表示)。

這是注入數據(通常是一個變量的值,但可以是任何Ruby代碼的評估)到一個字符串中間的最常見方法。


一個是要知道:

puts "This User name is #{User.create(username: 'Bobby')}!" 

這將使.to_s用戶的實例對象的隱式調用

如果您在用戶模型中定義的方法.to_s

class User 
    def to_s 
    self.username 
    end 

將輸出:

puts "This User name is #{User.create(username: 'Bobby')}" 
# => "This User name is Bobby" 
1

它是爲String Interpolation.

在Ruby中,有三種插值方式,而#{}只是一種方法。

apples = 4 
puts "I have #{apples} apples" 
# or 
puts "I have %s apples" % apples 
# or 
puts "I have %{a} apples" % {a: apples} 
0

這允許您評估字符串內的任意ruby代碼(僅限雙引號)。因此,例如,在像PHP你會做

$my_var = "The value of a = " . $a; 

但在Ruby中,你只是做

my_var = "The value of a = #{a}" 

這隻能如果字符串是在雙引號,和NOT單引號。如果我們使用單引號,那麼您將在文本中出現#{...}

0

您可以用它來表示要打印或放出的變量。例如:

puts "#{var}"會將存儲在您的變量var中的值放出。

1

這就是所謂的字符串插值

在Ruby中,串插指double-quoted strings執行Ruby代碼並替換部分字符串的能力(den由#{...}提交)與該Ruby代碼的評估。它是將數據注入到字符串中間的最常見方式(通常是一個變量的值,但可以是對任何Ruby代碼的評估)。

print "What is your name? " 
name = gets.chomp 
puts "Hello, #{name}" 

注意,任何代碼都可以去括號內,不只是variable名。 Ruby將評估該代碼,無論返回它將嘗試將其插入到字符串中。所以你可以簡單地說「你好,#{gets.chomp}」,忘記名稱變量。不過,最好不要在大括號中加入長表達式。

作者:Michael Morin

+1

[如果你要引用別人,你得屬性報價給他們。(http://ruby.about.com/od/sz/g/String-Interpolation.htm)。 –

+0

downvoted因爲你用別人的定義,沒有給他的學分,它... – MrYoshiji

+0

有1到時候我寫了這個)沒有解答,2。)我包括幾個鏈接到文章。不知道爲什麼你會低估這一點,但它是好的我猜,你的選擇授權SO。 –