Что делает% я или% в рубине?

Что означает значение% я или% я в рубине?

Я искал google для

"%i or %I" ruby

но не нашел ничего подходящего для рубина.

Ответ 1

%i[ ] # Non-interpolated Array of symbols, separated by whitespace
%I[ ] # Interpolated Array of symbols, separated by whitespace

Вторая ссылка из моих результатов поиска http://ruby.zigzo.com/2014/08/21/rubys-notation/

Примеры в IRB:

%i[ test ]
# => [:test]
str = "other"
%I[ test_#{str} ]
# => [:test_other] 

Ответ 2

Может быть трудно найти официальную документацию по Ruby (она здесь). На момент написания статьи текущей версией является 2.5.1, а документация для конструкции% я находится в документации для литералов Ruby.

Есть несколько удивительных (по крайней мере для меня!) Вариантов построения Ruby%. Существуют часто используемые формы %i %q %r %s %w %x, каждая из которых имеет заглавную версию для включения интерполяции. (см. документацию по Ruby для получения объяснений.

Но вы можете использовать многие типы разделителей, а не только []. Вы можете использовать любой вид скобок () {} [] <>, и вы можете использовать (в кавычках из документов ruby) "большинство других не алфавитно-цифровых символов для разделителей строк процента, таких как"% "," | "," ^ ", так далее."

Так что %i% bish bash bosh % работает так же, как %i[bish bash bosh]

Ответ 3

Это похоже на %w и %W которые работают аналогично ' и ":

x = :test

# %w won't interpolate #{...} style strings, leaving as literal
%w[ #{x} x ]
# => ["\#{x}", "x"]

# %w will interpolate #{...} style strings, converting to string
%W[ #{x} x ]
# => [ "test", "x"]

Теперь то же самое с %i и %I:

# %i won't interpolate #{...} style strings, leaving as literal, symbolized
%i[ #{x} x ]
# => [:"\#{x}", :x ]

# %w will interpolate #{...} style strings, converting to symbols
%I[ #{x} x ]
# => [ :test, :x ]