Jaka jest różnica?
Jaka jest różnica?
Odpowiedzi:
% w cudzysłowy jak pojedyncze cudzysłowy ''
(brak interpolacji zmiennych, mniej sekwencji sterujących), a% W cudzysłowy jak cudzysłowy ""
.
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}'
i "\#{foo}"
podam ci ten sam ciąg, który możesz zweryfikować '#{foo}' == "\#{foo}"
w irb
.
Chociaż to stary post, pytanie wciąż się pojawia, a odpowiedzi nie zawsze wydają mi się jasne. Więc oto moje myśli.
% wi% W to przykłady typów danych wejściowych z ogranicznikami ogólnymi , które odnoszą się do tablic. Istnieją inne typy, które obejmują% q,% Q,% r,% x oraz% i.
Różnica między dużymi i małymi literami polega na tym, że daje nam dostęp do funkcji pojedynczego i podwójnego cudzysłowu. Z pojedynczymi cudzysłowami i małymi literami% w nie mamy interpolacji kodu (np. # {SomeCode}) i ograniczony zakres działających znaków zmiany znaczenia (np. \, \ N). Z cudzysłowach i wielką% wag możemy nie mieć dostęp do tych funkcji.
Użyty separator może być dowolnym znakiem, a nie tylko otwartym nawiasem. Baw się przykładami powyżej, aby zobaczyć, jak to działa.
Aby uzyskać pełny opis z przykładami% w i pełną listą, znakami ucieczki i ogranicznikami - zajrzyj na: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
znak
%w&readable af&
Dokumentacja Percent Strings: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
%W
jest używany dla elementów tablicy w podwójnych cudzysłowach, takich jak %Q
na przykład
foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]
%w
jest używany dla elementów tablicy w pojedynczych cudzysłowach, takich jak %q
.
%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]