Ruby中常量前的冒号是啥意思? [复制]
Posted
技术标签:
【中文标题】Ruby中常量前的冒号是啥意思? [复制]【英文标题】:What does colon before a constant in Ruby mean? [duplicate]Ruby中常量前的冒号是什么意思? [复制] 【发布时间】:2017-03-25 12:53:42 【问题描述】:示例如下:
def container(number=:FIXME)
"bottles"
end
摘自:Sandi Metz,Katrina Owen。 “99 瓶 OOP。”电子书。
【问题讨论】:
书中该代码块下面的句子说:“上面的代码接受一个名为number
的参数,默认为符号:FIXME
”。然后解释为什么使用符号作为默认值。
我认为that 的问题有所不同,因为不是在谈论 ruby 中的常量和符号。
【参考方案1】:
它不是一个常量,它是一个Symbol 对象。
FIXME = 1
FIXME.class
#=> Fixnum
Object.const_defined?('FIXME')
#=> true
:FIXME.class
#=> Symbol
【讨论】:
为什么要使用大写我认为Ruby中的约定是如果变量有大写是一个常量。这让我很困惑,因为我从未见过大写的符号。 @EkaitzHernandezTroyas 我想你会发现进一步阅读的答案 - Sandi Matz 是最伟大的 Ruby 头脑之一,相信我,如果她用大写字母创建符号,她有充分的理由这样做;) 是的,这就是我阅读这本书的原因,但我认为她没有解释为什么使用大写字母,而且我完全无知,我认为这是一种不好的做法。 @EkaitzHernandezTroyas 正如 Stefan 在你的问题下评论的那样,很可能你还没有到她解释它的那一刻。我还没读过这本书,所以不知道她为什么这样做 @EkaitzHernandezTroya 使用大写符号是因为它突出。它意味着稍后将被替换。再次引用代码块后面的段落:“此默认值是一个临时 shim,其目的是启用逐步重构。重构完成后,应删除默认值。将其设置为一个值比如 :FIXME 会帮助你记住做这个清理。”以上是关于Ruby中常量前的冒号是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章