2014-03-04 3 views

ответ

0

Нет никакой разницы.

Это зависит от ваших предпочтений.

delegate :sum, to: :CONSTANT_ARRAY - это синтаксис Ruby 1.9 и после него.

delegate :sum, :to => :CONSTANT_ARRAY - синтаксис Ruby 1.8.

0

В принципе, в этом случае нет никакой разницы.

Hash-Rocket => - это старый стиль, вероятно, заимствованный из perl, в то время как синтаксис двоеточия - это новый, рубиновый стиль 1,9 стилей написания хэшей.

Последний более ориентирован на json-нотацию и поэтому может быть легче читать, если вы более знакомы с ним.

+0

Неверный. '$ set: {'a.b': 'c'}' является синтаксической ошибкой, но ': $ set => {: 'ab' => 'c'}' (и довольно часто, если вы работаете с MongoDB). –

+1

Если вы посмотрите на данный пример в исходном посте, нет никакой разницы. –

+0

Но сказать «нет никакой разницы» все еще некорректно, это утверждение должно быть квалифицировано в по крайней мере, для обозначения их как * new * и * old * styles также неверно. Даже сказать, что 'a: 'b'' is * json-notation * неверен, поскольку JSON требует, чтобы клавиши были процитированы, ссылаясь на это как JavaScript-обозначение быть более точным. –

4

=> более общий, чем просто :. С => ключ может быть любым типом данных, тогда как использование : заставляет ключ быть символом.

Например:

{ a: 1 } 
# => {:a=>1} # The key is the symbol :a 

{ 'a' => 1 } 
# => {"a"=>1} # The key is the string "a" 

{ "a": 1 } 
# => SyntaxError 

Почему один лучше другого?

Если ваши ключи являются символами, вы можете найти синтаксис :, чтобы быть более четким и менее загроможденным. Он также сразу узнаваем для тех, кто знаком с форматом данных JSON (хотя технически ключ должен быть строкой, окруженной двойными кавычками (") в соответствии с the standard, чтобы быть допустимым синтаксисом JSON, но нециклированные ключи распознаются в многие языки, включая JavaScript.)

Смежные вопросы