Что делает% я или% в рубине?
Что означает значение% я или% я в рубине?
Я искал 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 ]