루비 배열 : % w 대 % W


152

차이점은 무엇입니까?


18
"% w"는 루비의 가독성에 대해 너무 까다로운 사람들에게 평범한 레토르트입니다. 매번 작동합니다.
Craig Stuntz

지금 당신은 더 나은 응답을 가지고 :-)
정오표

6
부적합한 참고 로이 질문의 URL은 페이지가로드되는 동안 잠시 혼란 스럽습니다.
Fund Monica의 소송

답변:


233

% w는 작은 따옴표 ''(변수 보간 없음, 이스케이프 시퀀스 수가 적음)와 같이 인용하고 % W는 큰 따옴표와 같습니다 "".

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}"]

귀하의 예는 % w에 대해서도 큰 따옴표를 보여줍니다. 맞습니까?
Foton

예. 출력을 인쇄 할 때 Ruby는 항상 큰 따옴표를 사용하고와 같은 문자를 이스케이프합니다 #. '#{foo}'그리고 "\#{foo}"당신에게 당신이 확인할 수 있습니다 동일한 문자열, 줄 '#{foo}' == "\#{foo}"의를 irb.
브라이언 캠벨

처음에는 조금 혼란 스럽지만 설명해 주셔서 감사합니다.
Foton

29

% W 대 % w에 대해 찾은 응용 프로그램 :

greetings = %W(hi hello #{"how do you do"})
# => ["hi", "hello", "how do you do"]

12
이 경우에, 그냥하는 것이 더 쉽다greetings = %w(hi hello how\ do\ you\ do)
dinjas

21

% W는 일반적인 큰 따옴표 대체를 수행합니다. % w는 그렇지 않습니다.


11

오래된 게시물이지만 질문이 계속 나오고 답변이 항상 명확하게 보이지는 않습니다. 자, 여기 내 생각이 있습니다.

% w 및 % W는 배열과 관련된 일반 구분 입력 유형의 예입니다 . % q, % Q, % r, % x 및 % i를 포함하는 다른 유형이 있습니다.

대문자와 소문자의 차이점은 작은 따옴표와 큰 따옴표의 기능에 액세스 할 수 있다는 것입니다. 작은 따옴표와 소문자 % w를 사용하면 코드 보간 (예 : # {someCode}) 및 작동하는 제한된 범위의 이스케이프 문자 (예 : \, \ n)가 없습니다. 큰 따옴표와 대문자 %로 우리는 W 않는 이러한 기능에 액세스 할 수 있습니다.

사용 된 구분자는 열린 괄호뿐만 아니라 모든 문자가 될 수 있습니다. 위의 예를 사용하여 효과를 확인하십시오.

% w의 예제와 전체 목록, 이스케이프 문자 및 구분 기호에 대한 자세한 내용은 http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed를 참조하십시오. .html


1
좋은 기사입니다. 나는 당신이 문자열이나 다른 것들을 같은 방식으로 만들 수 있다는 것을 몰랐고 둘러싼 문자는 원하는대로 될 수 있습니다. 예를 들어,%w&readable af&
덱스


1

%W%Q예를 들어와 같이 큰 따옴표로 묶인 배열 요소에 사용됩니다 .

foo = "!"
%W{hello world #{foo}} # => ["hello", "world", "!"]

%w같은 작은 따옴표 배열 요소에 사용 %q됩니다.

%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]

0
array = %w(a b c d) 

동일

array = ["a", "b", "c", "d"]

%w 문자열에 따옴표의 바로 가기 기호입니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.