我刚开始在轨道上学习ruby,我想知道何时应该使用“=>”当我应该使用“=”进行分配。我看到你使用“=>”用于散列,用于为迁移中的符号赋值,但我不确定在哪里绘制线。
谢谢!
答案 0 :(得分:7)
=>
符号仅用于哈希。 Ruby有一个功能,其中哈希可以作为方法调用的最后一个参数传递,而不包括周围的大括号。这提供了类似于关键字参数的东西(尽管直到Ruby 2.0,Ruby没有关键字参数)。
所以当你看到这个:
t.integer :foo, :default => 5
它的真正含义是:
t.integer(:foo, { :default => 5 })
其余的只是语法糖,旨在让它看起来更好。
另一方面,=
符号是您熟悉并且喜欢几乎任何编程语言的赋值运算符。
答案 1 :(得分:0)
我挣扎了一段时间,但现在更喜欢尽可能使用新风格进行哈希
t.integer :foo, default: 5
t.string :bar, default: 'Dave'
答案 2 :(得分:0)
=>与任务不同,但我可以看出它为何令人困惑。在哈希中,您可以创建一个键和一对值。关键和价值可以是任何东西
{'key1' => 'some value', :symbol_key => 'other value'}
这与分配不同,您可以清楚地看到它,因为如果您希望上述哈希值仍然可用于您的程序,则必须将其传递给方法或将其分配给变量
myhash = {'key1' => 'some value', :symbol_key => 'other value'}
现在只能从哈希中检索内容
puts myhash['key1']
所以=> operator实际上用于构造哈希(或字典对象),赋值允许您在程序中存储值。
Rails(以及因此在迁移中)发生的事情是,正在创建散列并将其传递给方法调用而不会意识到它。但是管道仍然是相同的,它仍然只是一个创建的哈希。
在Ruby 1.9中,您现在可以使用类似javascript的语法定义哈希,因此您也可以开始看到它。
myhash = {key1: 'some value', key2: 'other value'}