Fark ne?
Fark ne?
Yanıtlar:
% w tek tırnak gibi ''
(değişken enterpolasyon yok, daha az kaçış dizisi) tırnak,% W çift tırnak gibi tırnak ""
.
irb(main):001:0> foo="hello"
=> "hello"
irb(main):002:0> %W(foo bar baz #{foo})
=> ["foo", "bar", "baz", "hello"]
irb(main):003:0> %w(foo bar baz #{foo})
=> ["foo", "bar", "baz", "\#{foo}"]
#
. '#{foo}'
ve "\#{foo}"
size ile kontrol edebilirsiniz aynı dizeyi, vermek '#{foo}' == "\#{foo}"
içinde irb
.
Eski bir yazı olmasına rağmen, soru ortaya çıkıyor ve cevaplar her zaman net görünmüyor. İşte düşüncelerim.
% w ve% W, Diziler ile ilgili Genel Sınırlı Girdi türlerine örnektir . % Q,% Q,% r,% x ve% i'yi içeren başka türler de vardır.
Büyük ve küçük harf arasındaki fark, tek ve çift tırnak özelliklerine erişmemizi sağlamasıdır. Tek tırnak ve küçük harf w% ile, kod enterpolasyonu (örn. # {SomeCode}) ve çalışan sınırlı kaçış karakterleri aralığımız (ör. \, \ N) yoktur. Çift tırnak ve büyük harf% ile biz W yok bu özelliklere erişebilir.
Kullanılan sınırlayıcı, sadece açık parantez değil, herhangi bir karakter olabilir. Etkili olduğunu görmek için yukarıdaki örneklerle oynayın.
% W örnekleri ve tam liste, kaçış karakterleri ve sınırlayıcıları ile tam bir yazmak için: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
işaret
%w&readable af&
Yüzde Dizeleri Belgeleri: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
%Q
örneğin, çift tırnaklı dizi öğeleri için kullanılır.
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
gibi tek tırnaklı dizi elemanları için kullanılır %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]