2013-05-10 4 views
4

다음은 동일한 결과를 생성 할 두 문장을 다음과 같이하는 경우가 %w% w를 언제 사용합니까?

arr = %w(abc def ghi jkl) 

arr = ["abc", "def", "ghi", "jkl"] 

사용되어야한다?

위의 경우에는 배열 ["abc", "def", "ghi", "jkl"]이 필요합니다. 이상적인 방법은 무엇입니까? 이전 (%w) 이상입니까?

+0

, 당신이 당신의 따옴표 및 이스케이프 할 필요가 없습니다에서 사용할 수 있습니다 귀하의 코드가 더 차갑게 보입니다. '% w '를 사용하는 두 가지 좋은 이유. – oldergod

+3

@oldergod는 따옴표가 있지만 공백을 넣지 않은 것은 희귀합니다. –

답변

5

일반 배열 대 %w[...]을 사용하는 경우? 나는 당신이 그 두 가지를보고, 그걸 입력하고, 방금 한 일을 생각함으로써 이유를 생각할 수있을 것이라고 확신합니다.

배열로 바꾸려는 단어의 목록이있는 경우 %w[...]을 사용하십시오. %w[...]은 새 요소를 배열에 쉽게 추가 할 수 있기 때문에 루프를 끝내려는 매개 변수가 있거나 명령에 추가 할 항목을 알고있을 때 사용합니다. 배열의 정의에는 시각적 노이즈가 적습니다.

%w을 트릭 할 수있는 공백이 포함 된 요소가있을 때 일반 문자열 배열을 사용하십시오. 문자열이 아닌 요소를 포함해야하는 배열에 사용하십시오. 쉼표를 사용하여 "' 사이의 요소를 쉼표로 묶으면 시각적 노이즈가 발생하지만 모든 객체 유형으로 배열을 만들 수도 있습니다.

그래서 당신이 가장 이해할 때 어느 쪽을 사용해야하는지 선택합니다. "프로그래머의 선택"이라고합니다.

+0

공백 문자를 이스케이프 처리 할 수 ​​있습니다. '% w (one \ word another \ word)' – Stefan

+0

Tin Man! – TDHM

+3

@Stefan, 네, 할 수는 있습니다 만,'% w'를 사용하는 목적을 상실하고 일반 배열에서 따옴표로 묶은 문자열을 사용하여 더 잘 고칠 수있는 시각적 노이즈 문제를 추가합니다. –

0

정확하게 지적했듯이, 동일한 결과를 생성합니다. 따라서, 결정할 때 더 간단한 코드를 생성하는 것을 선택하십시오. 이 경우 %w 연산자입니다. previous question의 경우 배열 리터럴입니다.

0

%w을 사용하면 문자열 주위에 따옴표를 사용하지 않아도됩니다. 또한

더 많은 단축키는 다음과 같은있다 :

%W - double quotes 
%r - regular expression 
%q - single-quoted string 
%Q - double-quoted string 
%x - shell command 

자세한 내용은 "What does %w(array) mean?"%의 w``와