В чем разница между => и: для хеш-ключей в Ruby?В чем разница между => и:
delegate :sum, to: :CONSTANT_ARRAY
delegate :sum, :to => :CONSTANT_ARRAY
Почему бы вам не быть лучше другого?
В чем разница между => и: для хеш-ключей в Ruby?В чем разница между => и:
delegate :sum, to: :CONSTANT_ARRAY
delegate :sum, :to => :CONSTANT_ARRAY
Почему бы вам не быть лучше другого?
Нет никакой разницы.
Это зависит от ваших предпочтений.
delegate :sum, to: :CONSTANT_ARRAY
- это синтаксис Ruby 1.9 и после него.
delegate :sum, :to => :CONSTANT_ARRAY
- синтаксис Ruby 1.8.
В принципе, в этом случае нет никакой разницы.
Hash-Rocket =>
- это старый стиль, вероятно, заимствованный из perl, в то время как синтаксис двоеточия - это новый, рубиновый стиль 1,9 стилей написания хэшей.
Последний более ориентирован на json-нотацию и поэтому может быть легче читать, если вы более знакомы с ним.
=>
более общий, чем просто :
. С =>
ключ может быть любым типом данных, тогда как использование :
заставляет ключ быть символом.
Например:
{ 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.)
Неверный. '$ set: {'a.b': 'c'}' является синтаксической ошибкой, но ': $ set => {: 'ab' => 'c'}' (и довольно часто, если вы работаете с MongoDB). –
Если вы посмотрите на данный пример в исходном посте, нет никакой разницы. –
Но сказать «нет никакой разницы» все еще некорректно, это утверждение должно быть квалифицировано в по крайней мере, для обозначения их как * new * и * old * styles также неверно. Даже сказать, что 'a: 'b'' is * json-notation * неверен, поскольку JSON требует, чтобы клавиши были процитированы, ссылаясь на это как JavaScript-обозначение быть более точным. –