Существует ли% w {} -подобный способ создания массива Fixnum в Ruby? - PullRequest
2 голосов
/ 04 октября 2011

Есть ли способ создать массив Fixnums, используя нотацию% ruby?

Очевидно, что написать довольно тривиально, например [править: изменил пример на непоследовательные цифры]

digits = %w{4 8 15 16 23 42}.map{|d| d.to_i}

=> [4, 8, 15, 16, 23, 42]

но это меня раздражает, и мне интересно, есть ли способ сделать это без карты. Ни один из этих источников не упоминает о такой возможности - мне не повезло?

Что означает% w (массив)?

Что такое% w "вещь" в рубине?

Синтаксис программирования на Ruby - нотация%

Ответы [ 5 ]

4 голосов
/ 04 октября 2011

Поскольку нотация% представляется одной из этих "ублюдочных" строк Perl, обрабатывающих наследования в Ruby, я сильно сомневаюсь в этом, но вы можете сохранить пару символов с помощью

digits = %w{1 2 3 4 5 6 7 8 9 10}.map(&:to_i)
2 голосов
/ 04 октября 2011

Я что-то упускаю или

digits = [4, 8, 15, 16, 23, 42]

=> [4, 8, 15, 16, 23, 42]

не делает этого?

Отличный выбор номеров, кстати:)

2 голосов
/ 04 октября 2011

Обозначение% специально относится к строкам, поэтому это не поможет вам приблизиться к примеру, который вы привели.

Если целые числа, которые вас интересуют, являются последовательными, вы можете использовать объект Range:1003 *

(1..10).to_a
0 голосов
/ 05 октября 2011

Вы можете отредактировать parse.y, который превращает исходный код в Ruby, а затем пересобрать Ruby.Я никогда не редактировал parse.y самостоятельно, но вот забавный и потрясающий разговор на RubyKaigi2011 об этом.

0 голосов
/ 04 октября 2011
Array.new(10) {|i| i}

Это способ сделать это без карты.

...