#{}在Ruby中意味着什么?

时间:2014-05-14 15:46:28

标签: ruby-on-rails ruby

我知道这可能是一个非常基本的问题,但我很难找到一个明确的答案。在Ruby中使用这个#{}是什么意思?它做了什么?

由于

5 个答案:

答案 0 :(得分:6)

用于字符串插值:(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代码的评估替换部分字符串(用#{...}表示)的能力。

     

这是将数据(通常是变量的值,但它可以是任何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 :(得分: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}

答案 2 :(得分:1)

它被称为字符串插值

在Ruby中,字符串插值指的是double-quoted strings执行Ruby代码并用该Ruby代码的评估替换部分字符串(由#{...}表示)的能力。这是将数据(通常是变量的值,但它可以是任何Ruby代码的评估)注入字符串中间的最常用方法。

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

请注意,任何代码都可以放在大括号内,而不仅仅是variable个名称。 Ruby将评估该代码以及返回的任何内容,它将尝试将其插入到字符串中。所以你可以轻松地说“Hello,#{gets.chomp}”并忘记名称变量。但是,最好不要在括号内放置长表达式。

作者:Michael Morin

答案 3 :(得分:0)

这允许您评估字符串中的任意ruby代码(仅限双引号)。例如,在PHP之类的东西中你可以做

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

但是在红宝石中,你只是做

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

仅当字符串是双引号而不是单引号时才有效。如果我们使用单引号,那么您将在文本

中显示#{...}

答案 4 :(得分:0)

您可以使用它来表示要打印或输出的变量。例如:

puts "#{var}"会输出存储在变量var中的值。