当前位置:  开发笔记 > 后端 > 正文

冒号的前置和追加之间的区别(:项目与项目:)

如何解决《冒号的前置和追加之间的区别(:项目与项目:)》经验,为你挑选了2个好方法。

在红宝石中附加和预先添加结肠有什么区别?

例:

#In rails you often have things like this:
has_many :models, dependent: :destroy

为什么dependent:有一个附加的结肠,但:models:destroy有预谋的结肠?有什么不同?



1> akatakritos..:

这是Ruby 1.9中的一种新语法,用于定义作为哈希中键的符号.

前置和附加都:定义了a symbol,但后者仅在散列初始化期间有效.

您可以将符号视为轻量级字符串常量.

它相当于

:dependent => :destroy

在1.9之前,使用稍微更冗长和难以键入的语法定义哈希:

hash = {
   :key => "value",
   :another_key => 4
}

他们在1.9中简化了它:

hash = {
   key: "value",
   another_key: 4
}

如果您要编写要在1.9之前的Ruby上使用的模块,请确保使用较旧的语法.



2> PericlesTheo..:

由于Ruby允许你省略括号(),在某些情况下允许花括号,{}它可能不是很明显,但上面的代码实际上是这样的:

has_many(:models, { dependent: :destroy } )

现在,它意味着has_many需要两个参数,一个是符号:,一个是不可变的字符串,如果你愿意,还有一个哈希,其中dependentdestroy是键,是值; 也可能被视为:dependent => destroy.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有