2012-10-02 1 views
0

단어의 배열을 반환하도록이 표현식을 얻으려면 어떻게해야합니까?ruby ​​- % w (% q (연속 된 단어)) 잘못된 요소를 반환합니다.

나는 % q이 (가) 문자열을 줄 것이고 % w는 나에게 단어의 배열을 줄 것이라고 생각했다. 비티 대신 나는

["%q(words", "in", "a", "row")"] 

이 도움이되지 않습니다 그 자체 승 그래서 그냥 %를 사용하여 몇 가지 큰 코드의 일부입니다 얻을.
% q 표현식을 먼저 삽입 할 수 있기를 원합니다.

답변

3

소문자 %w%q 내부 변수를 보간하지 않습니다. 대문자 인 %W%Q을 사용해야하며 보간하려면 변수를 #{}으로 묶어야합니다. 작업 코드의

버전 :

%W{#{%q{words in a row}}} 

그러나 저스틴 말한 것처럼, 나는이 점을 이해하지 않습니다. %w{}에 따옴표없이 바로 문자열을 직접 입력 할 수 있습니다.

3

아마도이 문제를 오해하고 있습니다. 그러나 문자열을 보간 한 다음 단어 배열로 변환하려면 %W이 대문자를 사용한다고 생각합니다 (here 참조).

%W(words in a row) 
#=> ["words", "in", "a", "row"] 
+0

일반적으로이 코드를 사용 하겠지만 보간이 필요합니다 (코드는 훨씬 큰 기본 코드입니다). –

+0

@MichaelDurrant 솔직히 말해서 그것이 거대한 기반이라면, String # split은 더 나은 일을 할 것입니다. – texasbruce

0

나는 그런 일을의 유용성을 의심하고, 거기에 냄새가 코드에서 확실히, 그러나 여기 방법입니다 :

eval("%w(#{%q(words in a row)})") 
# => ["words", "in", "a", "row"] 
관련 문제