📜  红宝石 |字符串插值

📅  最后修改于: 2022-05-13 01:55:19.773000             🧑  作者: Mango

红宝石 |字符串插值

字符串插值,它是关于将字符串组合在一起,但不是使用 +运算符。字符串插值仅在我们使用双引号(“”)形成字符串时才有效。字符串插值提供了一种处理字符串字面量的简单方法。字符串插值是指用尊重的值替换给定字符串中定义的变量或表达式。这就是字符串插值的工作方式,它执行任何可执行的操作。
让我们看看如何执行数字和字符串。
句法:

#{variable}

上面的语法指定{}里面的东西是可执行对象或变量。
以下是要理解的示例:
例子 :

# Ruby Program of String Interpolation
a = 1
b = 4
puts "The number #{a} is less than #{b}"

输出 :

The number 1 is less than 4

例子:

# Ruby Program of String Interpolation
  
s = 'Groot';
n = 16
  
# takes this as entire new string
puts "s age = n";
  
# interpolation
puts "#{s} age=#{n}";
  
# if number not converted to string throws an error
puts s+" age="+n.to_s;
输出:
s age=n
Groot age=16
Groot age=16

所以,唯一的好处是,我们不必将数字转换为字符串,因为 ruby 会处理它。

假设字符串=”weds” 在字符串连接中,如果我们连接类似 (“hela “+ 字符串 +” puri”) 的字符串,它会创建 3 个字符串对象,它从右到左移动,它首先创建“ puri” object1, + 方法将puri与现有字符串粘在一起并返回weds puri object2,这再次通过 + 方法获取并形成最终的hela weds puri object3。最终,在此过程中创建的对象 (1, 2) 被终止,因为它们没有用。

在字符串插值中,它为 ("hela"+ 字符串+" puri") 创建一个唯一的对象,并将现有字符串(weds) 嵌入其中。在这两种情况下,它最终都会创建一个对象,但为什么更喜欢插值而不是串联。两个原因,不需要将数据类型额外转换为字符串ruby 会处理它,并且这个过程是大多数开发人员使用的。

转义序列

字符串不仅可以包含文本。它们还可以包含控制字符。单引号或双引号之间的区别在于,双引号允许转义序列,而单引号不允许转义序列。
例子 :

# Ruby program of sting Interpolation
puts 'guardians\nGroot';
  
# gets executes and prints Groot on a newline.
puts "guardians\nGroot";
  
# takes care of control characters.
puts "hela\nweds\tpuri";

输出:

guardians\nGroot
guardians
Groot
hela
weds    puri

在上面的示例中,\n 是代表“换行符”字符的转义序列。