"% w" adalah jawaban saya yang biasa untuk orang-orang yang terlalu sombong tentang keterbacaan Ruby. Bekerja setiap saat.
Craig Stuntz
sekarang Anda memiliki respons yang lebih baik :-)
errata
6
Sebagai catatan samping yang tidak relevan, URL untuk pertanyaan ini membingungkan saya untuk sementara waktu sementara halaman memuat.
Dana Monica's Lawsuit
Jawaban:
233
% 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}"]
Contoh Anda juga menunjukkan tanda kutip ganda untuk% w. Apakah itu benar?
Foton
Iya. Saat mencetak output, Ruby selalu menggunakan tanda kutip ganda dan keluar dari karakter seperti #. '#{foo}'dan "\#{foo}"memberikan string yang sama, yang dapat Anda memverifikasi dengan '#{foo}' == "\#{foo}"di irb.
Brian Campbell
Ini sedikit membingungkan pada pandangan pertama, tapi terima kasih atas penjelasannya.
Foton
29
Aplikasi yang saya temukan untuk% W vs% w:
greetings =%W(hi hello #{"how do you do"})# => ["hi", "hello", "how do you do"]
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.
Itu artikel yang bagus. Saya tidak menyadari Anda dapat membuat string atau hal-hal lain dengan cara yang sama dan karakter yang dilampirkan dapat menjadi apa pun yang Anda inginkan. Misalnya,%w&readable af&
Jawaban:
% w tanda kutip seperti tanda kutip tunggal
''
(tidak ada variabel interpolasi, escape sequence lebih sedikit), sedangkan% W tanda kutip seperti tanda kutip ganda""
.sumber
#
.'#{foo}'
dan"\#{foo}"
memberikan string yang sama, yang dapat Anda memverifikasi dengan'#{foo}' == "\#{foo}"
diirb
.Aplikasi yang saya temukan untuk% W vs% w:
sumber
greetings = %w(hi hello how\ do\ you\ do)
% W melakukan penggantian kutip ganda normal. % w tidak.
sumber
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
sumber
%w&readable af&
Dokumentasi untuk Persen Strings: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
sumber
%W
digunakan untuk elemen array yang dikutip ganda seperti%Q
, misalnya,%w
digunakan untuk elemen array dengan kutip tunggal seperti%q
.sumber
Sama dengan
%w
adalah simbol jalan pintas untuk tanda kutip ke string!sumber