首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >=>运算符VS=运算符

=>运算符VS=运算符
EN

Stack Overflow用户
提问于 2013-03-16 14:36:39
回答 3查看 461关注 0票数 2

我刚刚开始学习ruby on rails,我想知道什么时候应该使用"=>“,什么时候应该使用"=”进行赋值。我注意到您使用"=>“表示哈希,用于为迁移中的符号赋值,但我不确定在哪里划线。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-03-16 14:42:58

=>符号仅用于哈希。Ruby有一个特性,在这个特性中,散列可以作为方法调用的最后一个参数传递,而不包括周围的大括号。这提供了一些类似于关键字参数的东西(尽管在Ruby 2.0之前,Ruby没有关键字参数)。

所以当你看到这个的时候:

代码语言:javascript
复制
t.integer :foo, :default => 5

它真正的意思是:

代码语言:javascript
复制
t.integer(:foo, { :default => 5 })

剩下的只是语法上的糖,旨在让它看起来更好。

另一方面,=符号是您在几乎所有编程语言中都熟悉和喜爱的赋值运算符。

票数 7
EN

Stack Overflow用户

发布于 2013-03-16 19:36:52

我在这个问题上挣扎了一段时间,但现在我更喜欢尽可能使用新的哈希样式

代码语言:javascript
复制
t.integer :foo, default: 5
t.string :bar, default: 'Dave'
票数 0
EN

Stack Overflow用户

发布于 2013-03-16 21:49:43

=>不等同于赋值,但我能理解为什么它令人困惑。在哈希表中,您可以将键和值作为一对来创建。键和值可以是任何值

代码语言:javascript
复制
{'key1' => 'some value', :symbol_key => 'other value'}

这与赋值不同,您可以清楚地看到这一点,因为如果您希望上面的散列对您的程序保持可用,则必须将其传递给方法或将其赋值给变量

代码语言:javascript
复制
myhash = {'key1' => 'some value', :symbol_key => 'other value'}

只有现在你才能从你的散列中检索东西

代码语言:javascript
复制
puts myhash['key1']

因此,=>运算符实际上用于构造散列(或字典对象),赋值允许您在程序中存储值。

Rails (因此在迁移中)经常发生的事情是,散列被创建并传递给方法调用,而您并没有意识到它。但是管道仍然是一样的,它仍然只是一个被创建的散列。

在Ruby1.9中,您现在可以使用类似javascript的语法定义散列,因此您可能也会开始看到这一点。

代码语言:javascript
复制
myhash = {key1: 'some value', key2: 'other value'}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15446341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档