„% w” to moja zwykła odpowiedź dla ludzi, którzy są zbyt zarozumiali, jeśli chodzi o czytelność Rubiego. Działa za każdym razem.
Craig Stuntz
teraz masz jeszcze lepszą odpowiedź :-)
errata
6
Jako nieistotna uwaga na marginesie, adres URL tego pytania zmylił mnie przez chwilę podczas ładowania strony.
Załóż pozew Moniki
Odpowiedzi:
233
% 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}"]
Twój przykład pokazuje również podwójne cudzysłowy dla% w. Czy to jest poprawne?
Foton
Tak. Podczas drukowania danych Ruby zawsze używa cudzysłowów i znaków ucieczki, takich jak #. '#{foo}'i "\#{foo}"podam ci ten sam ciąg, który możesz zweryfikować '#{foo}' == "\#{foo}"w irb.
Brian Campbell
To trochę zagmatwane na pierwszy rzut oka, ale dzięki za wyjaśnienie.
Foton
29
Aplikacja, którą znalazłem dla% W vs% w:
greetings =%W(hi hello #{"how do you do"})# => ["hi", "hello", "how do you do"]
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.
To dobry artykuł. Nie zdawałem sobie sprawy, że możesz tworzyć łańcuchy lub inne rzeczy w ten sam sposób, a otaczające znaki mogą być dowolne. Na przykład%w&readable af&
Odpowiedzi:
% w cudzysłowy jak pojedyncze cudzysłowy
''
(brak interpolacji zmiennych, mniej sekwencji sterujących), a% W cudzysłowy jak cudzysłowy""
.źródło
#
.'#{foo}'
i"\#{foo}"
podam ci ten sam ciąg, który możesz zweryfikować'#{foo}' == "\#{foo}"
wirb
.Aplikacja, którą znalazłem dla% W vs% w:
źródło
greetings = %w(hi hello how\ do\ you\ do)
% W wykonuje zwykłe podstawienia w cudzysłowie. % w nie.
źródło
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
źródło
%w&readable af&
Dokumentacja Percent Strings: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
źródło
%W
jest używany dla elementów tablicy w podwójnych cudzysłowach, takich jak%Q
na przykład%w
jest używany dla elementów tablicy w pojedynczych cudzysłowach, takich jak%q
.źródło
Taki sam jak
%w
jest symbolem skrótu dla cudzysłowu w ciągu znaków!źródło