在 ruby 中追加和前置冒号有什么区别?
例子:
#In rails you often have things like this:
has_many :models, dependent: :destroy
为什么 dependent:
有一个冒号,而 :models
和 :destroy
有一个冒号?有什么区别?
最佳答案
这是 Ruby 1.9 中的新语法,用于定义散列中作为键的符号。
前置和附加的:
都定义了一个symbol
,但后者仅在散列初始化期间有效。
你可以想到一个symbol作为轻量级字符串常量。
相当于
:dependent => :destroy
在 1.9 之前,散列是使用稍微冗长且难以输入的语法定义的:
hash = {
:key => "value",
:another_key => 4
}
他们在 1.9 中简化了它:
hash = {
key: "value",
another_key: 4
}
如果您曾经编写过要在 1.9 之前的 Ruby 上使用的模块,请确保使用较旧的语法。
关于ruby-on-rails - 冒号前缀和附加之间的区别(:item vs item:),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18217039/