Не совсем понятно, о чем вы говорите.
Если вы говорите о том, что может содержать Symbol
, то ответ: все и вся, включая символы новой строки, произвольные пробелы, управляющие символы, произвольно странные и неясные символы Юникода и все остальное.
Если говорить о различных способах написания Symbol
литералов, вот мое лучшее понимание:
- голой
:
буквальным: любой допустимый идентификатор Ruby (например, :foo
, :Foo
, :@foo
, :@@foo
, :$foo
, :$:
, ...)
- одинарная котировка
:
буквально: все, что действительно в одном кавычках String
, включая escape-последовательности, такие как :'\''
и :'\\'
- двойных кавычек
:
буквальные: все это действует в двойных кавычках String
буквальных, в том числе управляющих последовательностями, такие как :"\""
, :"\\"
и :"\n"
, а также интерполяции строк, который позволяет вводить результаты произвольного кода Ruby, в Symbol
, например :"#{if rand < 0.5 then RUBY_VERSION else ENV['HOME'] end}"
- одиночные кавычки
Array
из Symbol
сек буквальным: все, что это действует в одинарных кавычках Array
из String
с буквальным, например, %i|foo bar baz|
(эквивалент [:foo, :bar, :baz]
) %i(foo\ bar baz)
(эквивалент [:'foo bar', :baz]
), %i:foo bar:
(эквивалент [:foo, :bar]
)
- двойных кавычек
Array
из Symbol
сек буквального: все, что это действует в двойных кавычках Array
из String
с буквальным, например, %I|foo #{bar} baz|
и т. Д.
Symbol
хэш-ключи в синтаксисе key: value
: каждая действительная метка Ruby, например. {foo: 42}
Symbol
хэш-ключи в цитированном 'key': value
синтаксисе: каждый действительный Ruby String
литерал, включая escape-последовательности и интерполяцию, например.{"foo\n#{bar}": 42}
Есть, конечно, много других выражений, которые оценивают в Symbol
с:
- определение метода выражения:
def foo;end # => :foo
String#to_sym
(псевдоним String#intern
): 'foo bar'.to_sym # => :'foo bar'
- действительно, любой способ, который может
return
a Symbol
Почему вы хотите совместить символы с регулярным выражением? –
Извините мое невежество, но если вы можете использовать ': 'любую строку'', то, несомненно, что-либо, что действительно в строке, допустимо в символе. – Armand
Я делаю это для шаблонов двигателя. –