【发布时间】:2023-04-02 23:37:01
【问题描述】:
我在其他地方的答案中看到了这个例子,它输出foobar:
a = :foo
def bar(b)
:"#{b}bar"
end
c = bar(a)
c
【问题讨论】:
标签: ruby
我在其他地方的答案中看到了这个例子,它输出foobar:
a = :foo
def bar(b)
:"#{b}bar"
end
c = bar(a)
c
【问题讨论】:
标签: ruby
冒号不是bar 中的运算符,它只是一个Symbol 文字,它使用字符串插值来构建Symbol。一些Symbols 需要引用以避免语法问题,例如:
:'a+b'
您也可以在这种语法中使用双引号,这些引号的行为就像字符串的双引号一样,因此它们支持字符串插值。所以这个:
:"#{b}bar"
相当于:
"#{b}bar".to_sym
或
(b.to_s + 'bar').to_sym
如果您#inspect您的价值,您将更好地了解它包含的内容:
puts c.inspect
# :foobar
【讨论】: