% w (array)는 무엇을 의미합니까?
FileUtils에 대한 문서를보고 있습니다. 다음 줄이 혼란 스럽습니다.
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
무슨 %w
뜻입니까? 문서를 알려줄 수 있습니까?
%w(foo bar)
에 대한 바로 가기입니다 ["foo", "bar"]
. 의미는 쉼표 대신 공백으로 구분 된 문자열 배열을 따옴표없이 작성하는 표기법입니다. zenspider의 quickref 에서 리터럴을 작성하는 방법 목록을 찾을 수 있습니다 .
저는 %w()
"단어 배열" 이라고 생각 합니다. 요소는 공백으로 구분되고 문자열 배열을 반환합니다.
다른 % 리터럴이 있습니다.
%r()
정규 표현식을 작성하는 또 다른 방법입니다.%q()
작은 따옴표로 묶인 문자열을 작성하는 또 다른 방법입니다 (여러 줄이 될 수 있으므로 유용합니다).%Q()
큰 따옴표로 묶인 문자열을 제공합니다.%x()
셸 명령입니다.%i()
기호 배열 제공 (Ruby> = 2.0.0)%s()
foo
기호 (:foo
) 로 바뀝니다.
다른 사람은 모르지만 저기에 숨어있는 사람이있을 수 있습니다 ...
또한 다음과 %s
같은 기호를 만들 수 있습니다.
%s|some words| #Same as :'some words'
%s[other words] #Same as :'other words'
%s_last example_ #Same as :'last example'
Ruby 2.0.0부터 다음 사항도 있습니다.
%i( a b c ) # => [ :a, :b, :c ]
%i[ a b c ] # => [ :a, :b, :c ]
%i_ a b c _ # => [ :a, :b, :c ]
# etc...
%W
그리고%w
당신이 따옴표와 쉼표를 사용하지 않고 문자열의 배열을 만들 수 있습니다.
오래된 게시물이지만 질문이 계속 나오고 답변이 항상 명확하게 보이지는 않으므로 여기에 내 생각이 있습니다.
%w
및 배열과 관련된 %W
일반 구분 입력 유형의 예입니다 . 포함하는 다른 종류가 있습니다 %q
, %Q
, %r
, %x
및 %i
.
대문자와 소문자 버전의 차이점은 작은 따옴표와 큰 따옴표의 기능에 액세스 할 수 있다는 것입니다. 작은 따옴표와 (소문자)를 사용하면 %w
코드 보간 ( #{someCode}
) 이없고 작동하는 제한된 범위의 이스케이프 문자 ( \\
, \n
)가 있습니다. 큰 따옴표와 (대문자)로 %W
우리는 않는다 이러한 기능에 액세스 할 수 있습니다.
사용되는 구분 기호는 여는 괄호뿐만 아니라 모든 문자가 될 수 있습니다. 위의 예를 사용하여 효과를 확인하십시오.
의 예 %w
와 전체 목록, 이스케이프 문자 및 구분 기호가 포함 된 전체 글을 보려면 " Ruby-% w vs % W – 비밀이 공개되었습니다! "를 참조하십시오.
대신 %w()
우리는%w[]
Ruby 스타일 가이드에 따르면 :
단어 배열 (공백과 특수 문자가없는 비어 있지 않은 문자열)이 필요한 경우 리터럴 배열 구문보다 % w를 선호합니다. 두 개 이상의 요소가있는 배열에만이 규칙을 적용하십시오.
# bad
STATES = ['draft', 'open', 'closed']
# good
STATES = %w[draft open closed]
다양한 종류의 백분율 리터럴에 가장 적합한 중괄호를 사용하십시오.
[]
배열 리터럴 ( %w, %i, %W, %I
)의 경우 표준 배열 리터럴과 정렬됩니다.
# bad
%w(one two three)
%i(one two three)
# good
%w[one two three]
%i[one two three]
http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings의 백분율 문자열 문서에서 발췌 :
문자열을 생성하는 % (...) 외에도 %는 다른 유형의 객체를 생성 할 수 있습니다. 문자열과 마찬가지로 대문자는 보간 및 이스케이프 문자를 허용하고 소문자는 문자를 비활성화합니다.
These are the types of percent strings in ruby:
...
%w: Array of Strings
I was given a bunch of columns from a CSV spreadsheet of full names of users and I needed to keep the formatting, with spaces. The easiest way I found to get them in while using ruby was to do:
names = %( Porter Smith
Jimmy Jones
Ronald Jackson).split('\n')
This highlights that %()
creates a string like "Porter Smith\nJimmyJones\nRonald Jackson"
and to get the array you split
the string on the "\n"
["Porter Smith", "Jimmy Jones", "Ronald Jackson"]
So to answer the OP's original question too, they could have wrote %(cgi\ spaeinfilename.rb;complex.rb;date.rb).split(';')
if there happened to be space
when you want the space
to exist in the final array output.
참고URL : https://stackoverflow.com/questions/1274675/what-does-warray-mean
'programing tip' 카테고리의 다른 글
파이썬의 super ()는 다중 상속과 어떻게 작동합니까? (0) | 2020.09.29 |
---|---|
T-SQL을 사용하여 외래 키 제약 조건을 일시적으로 비활성화하려면 어떻게해야합니까? (0) | 2020.09.29 |
경계 내에 맞게 TextView 텍스트 자동 크기 조정 (0) | 2020.09.29 |
Collatz 추측을 수작업으로 작성한 어셈블리보다 빠르게 테스트하기위한 C ++ 코드-왜? (0) | 2020.09.29 |
Mac에 Java 8을 설치하는 방법 (0) | 2020.09.29 |