2012-01-11 20 views
148

Tôi thích biểu đen này cho một mảng của chuỗi:Có ký hiệu chữ nào cho một mảng biểu tượng không?

%w(i can easily create arrays of words) 

tôi tự hỏi nếu có một chữ để có được một mảng của các biểu tượng. Tôi biết tôi có thể làm

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

nhưng thật tuyệt vời khi sử dụng chữ.

+0

Cách tiếp cận này sẽ đẹp hơn hơn là chỉ tạo ra một mảng của biểu tượng? Hoặc một phương pháp đơn giản? Meh. –

+0

trong trường hợp này, còn điểm nào với ký hiệu '% w'? –

+0

IMO một mảng các ký hiệu ít lộn xộn hơn một chuỗi các chuỗi đã có, và thường ít phổ biến hơn. YMMV. –

Trả lời

246

Có! Điều này là có thể bây giờ trong Ruby 2.0.0. Một cách để viết nó là:

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

Bạn cũng có thể sử dụng delimiters khác, vì vậy bạn cũng có thể viết %i(foo bar) hoặc %i!foo bar! ví dụ.

Tính năng này ban đầu được công bố ở đây:

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

Nó được đề cập trong các tài liệu chính thức của Ruby ở đây:

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

+3

cảm ơn, @ MarcelJackwerth đã tuyên bố nó trong một nhận xét về câu trả lời được chấp nhận trước đó, nhưng tôi sẽ chấp nhận câu trả lời của bạn cho hậu thế. –

+3

Lưu ý rằng giống như với các công cụ sửa đổi khác, có thể sử dụng một loạt các dấu phân tách khác. ví dụ. '% i [foo bar]', '% i {foo bar}', '% i! foo thanh!', '% i% foo bar%'. – user664833

+1

Nếu bạn muốn đánh dấu sự hỗ trợ cho điều này trong TextMate hoặc Văn bản tuyệt vời, hãy xem [tệp đã sửa đổi .tmLanguage của tôi trong gist này] (https://gist.github.com/kreeger/9584625). –

24

Trong Ruby 1.x, tiếc là danh sách có sẵn %-delimiters bị hạn chế

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 
+0

quá tệ ... cảm ơn vì liên kết và danh sách. không biết '% x', có vẻ dễ đọc hơn ký hiệu backticks tôi sử dụng –

+3

tốt, không quá đáng tiếc đối với những người hầu như không thể giữ những cái hiện có trong đầu của họ (đó sẽ là tôi). – tokland

+26

Trong Ruby 2.0, chúng tôi sẽ nhận% i cho mảng biểu tượng, xem: http://www.ruby-lang.org/zh_TW/news/2012/11/02/ruby-2-0-0-preview1-released/ –

Các vấn đề liên quan