Ruby on rails 冒号的前置和追加之间的差异(:项与项:)
在ruby中添加冒号和在冒号前面添加冒号有什么区别 例如:Ruby on rails 冒号的前置和追加之间的差异(:项与项:),ruby-on-rails,ruby,colon,Ruby On Rails,Ruby,Colon,在ruby中添加冒号和在冒号前面添加冒号有什么区别 例如: #In rails you often have things like this: has_many :models, dependent: :destroy 为什么dependent:有一个附加冒号,而:models和:destroy有一个前置冒号?区别是什么?在这两种情况下,冒号都表示符号,但添加冒号是表示符号是散列中的键的缩写 dependent: :destroy 与 :dependent => :destroy
#In rails you often have things like this:
has_many :models, dependent: :destroy
为什么
dependent:
有一个附加冒号,而:models
和:destroy
有一个前置冒号?区别是什么?在这两种情况下,冒号都表示符号,但添加冒号是表示符号是散列中的键的缩写
dependent: :destroy
与
:dependent => :destroy
这是Ruby 1.9中的一种新语法,用于定义散列中的键符号
dependent: :destroy
前缀和附加的:
都定义了符号
,但后者仅在哈希初始化期间有效
可以将a视为一个轻量级字符串常量
相当于
:dependent => :destroy
在1.9之前,散列的定义语法略为冗长且难以键入:
hash = {
:key => "value",
:another_key => 4
}
他们将其简化为1.9:
hash = {
key: "value",
another_key: 4
}
如果您要在Ruby 1.9之前的版本中编写一个模块,请确保使用较旧的语法。在1.9中,“附加”冒号只是显示哈希值的新常用方式
dependent::destroy
与:dependent=>:destroy
另一方面,“带前缀的”冒号表示Ruby中的符号数据类型。因为Ruby允许省略括号
()
,在某些情况下,大括号{}
可能不太明显,但上面的代码实际上是这样的:
有很多(:模型,{dependent::destroy})
现在,这意味着有许多
接受两个参数,一个是符号:
,如果愿意,是一个不可变的字符串,还有一个散列,其中依赖的
是键,销毁的
是值;也可能被视为:dependent=>destroy
可能重复的