【问题标题】:What is the colon 'operator' doing in this example?在此示例中,冒号“运算符”在做什么?
【发布时间】:2023-04-02 23:37:01
【问题描述】:

我在其他地方的答案中看到了这个例子,它输出foobar

a = :foo

def bar(b)
  :"#{b}bar"
end

c = bar(a)

c       

【问题讨论】:

    标签: ruby


    【解决方案1】:

    冒号不是bar 中的运算符,它只是一个Symbol 文字,它使用字符串插值来构建Symbol。一些Symbols 需要引用以避免语法问题,例如:

    :'a+b'
    

    您也可以在这种语法中使用双引号,这些引号的行为就像字符串的双引号一样,因此它们支持字符串插值。所以这个:

    :"#{b}bar"
    

    相当于:

    "#{b}bar".to_sym
    

    (b.to_s + 'bar').to_sym
    

    如果您#inspect您的价值,您将更好地了解它包含的内容:

    puts c.inspect
    # :foobar
    

    【讨论】:

    • 值得一提的是,OP 中的“它是设置变量作为参考”的措辞是错误且令人困惑的。
    • @mudasobwa 我认为这是一种令人困惑且“不是他们有史以来最好的”英语用法,因此进入兔子洞会分散注意力。
    • 您对变量作为参考是正确的。我从这里得到它:stackoverflow.com/questions/39203911/…。很明显,我从中提取的示例与通过引用传递无关。
    • 我删除了最后令人困惑的行。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 2017-10-20
    • 2011-09-14
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多