【问题标题】:String substitution in ruby depends on variable's first character [duplicate]ruby 中的字符串替换取决于变量的第一个字符
【发布时间】:2014-05-09 22:16:39
【问题描述】:

在我认为变量范围是我得到提示的原因之后,该替换取决于变量的第一个字符是否是字母/下划线。但我不明白意图。让我们举个例子:

$var1 = "bar"
_var2 = "bar"
var3 = "bar"
Var4 = "bar"
@var5 = "bar"
puts "foo #$var1"
puts "foo #_var2"
puts "foo #var3"
puts "foo #Var4"
puts "foo #@var5"

结果如下:

foo bar
foo #_var2
foo #var3
foo #Var4
foo bar

我希望所有 5 行都相同。它是一个错误吗?或者这种行为的意图是什么?

【问题讨论】:

  • 请不要破坏您的帖子。唯一能让你受益的是暂停。

标签: ruby string-interpolation sigils


【解决方案1】:

这与范围无关。这里的问题是在# 之后的{} 是否可以在插值中省略。如果你输入{},那么上面的任何一个都可以。当变量以非字母字符(字母或下划线以外的字符,即$@)开头时,可以省略{}。如果你不能省略{},那么它不会被插值。

【讨论】:

  • When you have a variable starting with a non-letter character (alphabet or underscore), you can omit the {} - 给出的例子是不正确的。 :)
  • @BroiSatse 哎呀,恰恰相反。我修好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2020-06-19
  • 2018-12-11
  • 1970-01-01
  • 2020-03-10
  • 2014-03-13
  • 2020-03-30
相关资源
最近更新 更多