此代码是否具有等效性
class Product < ActiveRecord::Base
validates :legacy_code, :format => { :with => /\A[a-zA-Z]+\z/,
:message => "Only letters allowed" }
end
到此代码:
class Product < ActiveRecord::Base
validates :legacy_code, format: { with:/\A[a-zA-Z]+\z/,
message:"Only letters allowed" }
end
...
答案 0 :(得分:2)
是的,这些代码在ruby 1.9中是等效的
{:key => vales}
- 是ruby 1.8中的哈希语法
{key: value}
- 是一种新的哈希语法,它是在ruby 1.9中添加的
答案 1 :(得分:1)
是。只要您不使用Ruby 1.8,就可以使用{a: 'b'}
语法。它与{:a => 'b'}
完全相同,只是更短。
在IRB中运行时,两个示例都显示相同的结果(在Ruby 1.9中)。
$ irb1.9
irb(main):001:0> {:a => 'b'}
=> {:a=>"b"}
irb(main):002:0> {a: 'b'}
=> {:a=>"b"}
irb(main):003:0>
但是在Ruby 1.8中运行时,{a: 'b'}
不起作用。
$ irb1.8
irb(main):001:0> {:a => 'b'}
=> {:a=>"b"}
irb(main):002:0> {a: 'b'}
SyntaxError: compile error
(irb):2: odd number list for Hash
{a: 'b'}
^
(irb):2: syntax error, unexpected ':', expecting '}'
{a: 'b'}
^
(irb):2: syntax error, unexpected '}', expecting $end
from (irb):2
irb(main):003:0>
答案 2 :(得分:0)
如果您使用的是ruby 1.9,则它是有效的,也是等效的。