我刚刚开始学习ruby on rails,我想知道什么时候应该使用"=>“,什么时候应该使用"=”进行赋值。我注意到您使用"=>“表示哈希,用于为迁移中的符号赋值,但我不确定在哪里划线。
谢谢!
发布于 2013-03-16 14:42:58
=>符号仅用于哈希。Ruby有一个特性,在这个特性中,散列可以作为方法调用的最后一个参数传递,而不包括周围的大括号。这提供了一些类似于关键字参数的东西(尽管在Ruby 2.0之前,Ruby没有关键字参数)。
所以当你看到这个的时候:
t.integer :foo, :default => 5它真正的意思是:
t.integer(:foo, { :default => 5 })剩下的只是语法上的糖,旨在让它看起来更好。
另一方面,=符号是您在几乎所有编程语言中都熟悉和喜爱的赋值运算符。
发布于 2013-03-16 19:36:52
我在这个问题上挣扎了一段时间,但现在我更喜欢尽可能使用新的哈希样式
t.integer :foo, default: 5
t.string :bar, default: 'Dave'发布于 2013-03-16 21:49:43
=>不等同于赋值,但我能理解为什么它令人困惑。在哈希表中,您可以将键和值作为一对来创建。键和值可以是任何值
{'key1' => 'some value', :symbol_key => 'other value'}这与赋值不同,您可以清楚地看到这一点,因为如果您希望上面的散列对您的程序保持可用,则必须将其传递给方法或将其赋值给变量
myhash = {'key1' => 'some value', :symbol_key => 'other value'}只有现在你才能从你的散列中检索东西
puts myhash['key1']因此,=>运算符实际上用于构造散列(或字典对象),赋值允许您在程序中存储值。
Rails (因此在迁移中)经常发生的事情是,散列被创建并传递给方法调用,而您并没有意识到它。但是管道仍然是一样的,它仍然只是一个被创建的散列。
在Ruby1.9中,您现在可以使用类似javascript的语法定义散列,因此您可能也会开始看到这一点。
myhash = {key1: 'some value', key2: 'other value'}https://stackoverflow.com/questions/15446341
复制相似问题