기호 배열에 대한 문자 표기법이 있습니까?


170

나는 문자열 배열에 대한이 리터럴 표현식을 좋아합니다.

%w( i can easily create arrays of words )

기호 배열을 얻는 리터럴이 있는지 궁금합니다. 내가 할 수 있다는 걸 알아

%w( it is less elegant to create arrays of symbols ).map( &:to_sym )

그러나 리터럴을 사용하는 것만으로도 정말 훌륭합니다.


이 방법은 단순히 기호 배열을 만드는 것보다 좋을까요? 아니면 간단한 방법? Meh.
Dave Newton

이 경우 %w표기법 의 요점은 무엇입니까?
m_x

IMO 기호 배열은 이미 문자열 배열보다 덜 어수선하며 일반적으로 덜 일반적입니다. YMMV.
Dave Newton

<troll> ruby ​​2 이후 루비 팀이 저와 동의 한 것 같습니다 ... </ troll>
m_x

답변:


277

예! 이것은 이제 Ruby 2.0.0에서 가능합니다. 작성하는 한 가지 방법은 다음과 같습니다.

%i{foo bar}  # => [:foo, :bar]

당신은 또한 쓸 수 있도록 당신은 또한, 다른 구분 기호를 사용할 수 있습니다 %i(foo bar)또는 %i!foo bar!예를 들어.

이 기능은 원래 여기에 발표되었습니다.

http://www.ruby-lang.org/zh_TW/news/2012/11/02/ruby-2-0-0-preview1-released/

루비 공식 문서에 나와 있습니다.

http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings


3
감사합니다. @ MarcelJackwerth는 이미 이전에 허용 된 답변에 대한 의견으로 언급했지만 후손에 대해서는 귀하의 의견을 수락합니다.
m_x

3
다른 수정 자와 마찬가지로 다양한 다른 구분 기호를 사용할 수 있습니다. 예를 들어 %i[foo bar], %i{foo bar}, %i!foo bar!, %i%foo bar%.
user664833

1
TextMate 또는 Sublime Text에서 지원을 강조 표시하려면 이 요지에서 수정 된 .tmLanguage 파일을 확인하십시오 .
벤 크리거

1
rubocop 에 따르면 , 사용하는 것이 좋습니다%i[foo bar]
Mapad

26

불행히도 Ruby 1.x에서는 사용 가능한 % 구분 기호 목록 이 제한되어 있습니다.

Modifier    Meaning
%q[ ]       Non-interpolated String (except for \\ \[ and \])
%Q[ ]       Interpolated String (default)
%r[ ]       Interpolated Regexp (flags can appear after the closing delimiter)
%s[ ]       Non-interpolated Symbol
%w[ ]       Non-interpolated Array of words, separated by whitespace
%W[ ]       Interpolated Array of words, separated by whitespace
%x[ ]       Interpolated shell command

링크와리스트에 감사합니다. 몰랐다 %x, 내가 사용하는 백틱 표기법보다 더 읽기 쉬운 것
m_x

3
글쎄, 기존 사람을 간신히 머리에 넣을 수있는 사람들에게는 그렇게 불행하지 않습니다.
tokland

26
루비 2.0에서 우리는, 기호 배열을위한 % 내가 얻을 것이다 참조 : ruby-lang.org/zh_TW/news/2012/11/02/...
마르셀 Jackwerth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.