-3

このコードは同等ですか

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

??

4

3 に答える 3

2

はい、このコードは ruby​​ 1.9 でも同等です。
{:key => vales}- は ruby​​ 1.8 のハッシュ構文です
{key: value}- は新しいハッシュ構文で、ruby 1.9 で追加されました

于 2012-11-17T12:57:02.750 に答える
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>
于 2012-11-17T13:01:26.623 に答える
0

Ruby 1.9 を使用している場合は有効であり、同等です。

于 2012-11-17T12:57:27.310 に答える