Apa bedanya?
Apa bedanya?
Jawaban:
% w tanda kutip seperti tanda kutip tunggal ''(tidak ada variabel interpolasi, escape sequence lebih sedikit), sedangkan% W tanda kutip seperti tanda kutip ganda "".
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}'dan "\#{foo}"memberikan string yang sama, yang dapat Anda memverifikasi dengan '#{foo}' == "\#{foo}"di irb.
Meskipun sudah tua, pertanyaannya terus muncul dan jawabannya tidak selalu jelas bagi saya. Jadi, inilah pikiran saya.
% w dan% W adalah contoh tipe Input Pembatas Umum , yang terkait dengan Array. Ada tipe lain yang termasuk% q,% Q,% r,% x dan% i.
Perbedaan antara huruf besar dan kecil adalah memberi kita akses ke fitur kutipan tunggal dan ganda. Dengan tanda kutip tunggal dan huruf kecil% w, kami tidak memiliki interpolasi kode (mis. # {SomeCode}) dan sejumlah karakter escape yang terbatas (mis. \, \ N). Dengan tanda kutip ganda dan huruf besar% W kita lakukan memiliki akses ke fitur ini.
Pembatas yang digunakan dapat berupa karakter apa saja, bukan hanya tanda kurung terbuka. Mainkan dengan contoh di atas untuk melihat efeknya.
Untuk penulisan lengkap dengan contoh% w dan daftar lengkap, karakter dan pembatas pelarian - lihat di: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealedaled .html
Menandai
%w&readable af&
Dokumentasi untuk Persen Strings: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%Wdigunakan untuk elemen array yang dikutip ganda seperti %Q, misalnya,
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%wdigunakan untuk elemen array dengan kutip tunggal seperti %q.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]