在关联中,我们通常使用a :b (belongs_to :something)。当我们创建一个带有符号键的散列时,我们通常使用a: b。话虽如此,我的问题是这两种语法之间的区别是什么。还有,有没有什么逻辑可以记住什么时候使用哪个约定?
发布于 2019-06-18 18:46:48
发布于 2019-06-19 00:36:29
这里的区别在于方法调用和散列键。它们看起来非常相似,如果你不确定你要找的是什么,很容易混淆。
在您的第一个示例中:
a :b在长文中这是:
a(:b)现在,这显然是一个方法(a)的参数(:b)。
在另一种形式中,它是不同的:
a: b如果这是方法调用的一部分,如下所示:
f a: b那么这实际上意味着:
f(a: b)它的完整形式是:
f({ a: b })其中,这是key: value样式后面的散列定义。这里:a是键(符号),b是值(变量或方法调用)。
你会经常看到有符号键和值的a: :b。
要在阅读代码时区分这两种形式,请看一下代码出现在哪里,以获得上下文的感觉。在编写代码时,请始终根据方法调用和散列定义更清晰地表达您的想法。
https://stackoverflow.com/questions/56647271
复制相似问题