SORU
30 Aralık 2011, Cuma


Orada arasında herhangi bir fark var `:key => "değer"` ve `key: "değer"` karma gösterimler?

** 5 (hashrocket) ve key: "value" (Ruby 1.9) gösterimler arasında herhangi bir fark var mı?

Eğer değilse, o zaman key: "value" gösterimde kullanmak istiyorum. Beni x: gösterimler :x => dönüştürmek için yardımcı olan bir taş var mı?

CEVAP
30 Aralık 2011, Cuma


Evet, bir fark var. Bu yasal

h = { :$in => array }
h = { :'a.b' => 'c' }
h[:s] = 42

ama bu değildir:

h = { $in: array }
h = { 'a.b': 'c' } # but this is okay in Ruby2.2 
h[s:] = 42

Siz de yapabilirsiniz böylece => ile bir anahtar gibi bir şey kullanabilirsiniz:

h = { C.new => 11 }
h = { 23 => 'pancakes house?' }

ama bunu yapamazsın:

h = { C.new: 11 }
h = { 23: 'pancakes house?' }

JavaScript tarzı (key: value) sadece yararlı eğer senin Karma anahtarları "basit" simgeler (daha fazla veya daha az bir şey bu maçları /\A[a-z_]\w\z/i, AFAIK çözümleyici kullanır etiketini desen için bu tuşlar).

:$in stil simgeler eğer MongoDB kullanırsanız Karma stilleri karıştırma sonun kadar MongoDB kullanarak zaman adil bir bit göstermek. Ve, eğer hiç iş ile özel anahtarları Karma (h[:k]) yerine tüm karma (h = { ... }), hala kullanmak zorunda kolon-ilk stil için semboller; olacak da kullanmak lider-kolon tarzı için sembolleri kullanmak dışında Karıştırır. JavaScript tarzı ile hiç rahatsız değilim bu kadar tutarlı olmasını tercih ederim.

JavaScript tarzı ile bazı sorunlar Ruby 2.2 giderildi. Şimdi, örneğin: etiketler geçerli olmayan simgeler varsa tırnak kullanabilirsiniz

h = { 'where is': 'pancakes house?', '$set': { a: 11 } }

Ama yine de eğer anahtarları sembolleri değilse hashrocket gerekiyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fuse

    Fuse

    21 Kasım 2005
  • Paste Magazine

    Paste Magazi

    28 AĞUSTOS 2008
  • TROPFEST

    TROPFEST

    27 Mart 2007