Sự khác biệt là gì?
Sự khác biệt là gì?
Câu trả lời:
% w trích dẫn như dấu ngoặc đơn ''
(không có nội suy biến, ít chuỗi thoát), trong khi% W trích dẫn như dấu ngoặc kép ""
.
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}'
và "\#{foo}"
cung cấp cho bạn cùng một chuỗi, mà bạn có thể xác minh với '#{foo}' == "\#{foo}"
trong irb
.
Mặc dù một bài viết cũ, câu hỏi tiếp tục được đưa ra và câu trả lời không phải lúc nào cũng rõ ràng đối với tôi. Vì vậy, đây là suy nghĩ của tôi.
% w và% W là ví dụ về các loại Đầu vào được phân tách chung , có liên quan đến Mảng. Có các loại khác bao gồm% q,% Q,% r,% x và% i.
Sự khác biệt giữa chữ hoa và chữ thường là nó cho phép chúng ta truy cập vào các tính năng của trích dẫn đơn và kép. Với dấu ngoặc đơn và chữ thường% w, chúng tôi không có phép nội suy mã (ví dụ # {someCode}) và một phạm vi ký tự thoát giới hạn hoạt động (ví dụ \, \ n). Với dấu ngoặc kép và chữ hoa% W chúng tôi làm có quyền truy cập vào các tính năng này.
Dấu phân cách được sử dụng có thể là bất kỳ ký tự nào, không chỉ là dấu ngoặc đơn mở. Chơi với các ví dụ trên để thấy rằng có hiệu lực.
Để viết đầy đủ với các ví dụ về% w và danh sách đầy đủ, các ký tự thoát và dấu phân cách - hãy xem: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-reveal .html
dấu
%w&readable af&
Tài liệu cho chuỗi phần trăm: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
được sử dụng cho các phần tử mảng được trích dẫn kép %Q
, ví dụ như
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
được sử dụng cho các phần tử mảng trích dẫn như %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]