Я не могу заставить IRB принимать символы UTF-8, поэтому я использовал тестовый скрипт (/tmp/utf_test.rb
).
"λ" отлично работает как имя переменной:
# encoding: UTF-8
λ = 'foo'
puts λ
# from the command line:
> ruby -KU /tmp/utf_test.rb
foo
"λ" также отлично работает как имя метода:
# encoding: UTF-8
Kernel.class_eval do
alias_method :λ, :lambda
end
(λ { puts 'hi' }).call
# from the command line:
> ruby -KU /tmp/utf_test.rb:
hi
Это не работает как константа, хотя:
# encoding: UTF-8
Object.const_set :λ, 'bar'
# from the command line:
> ruby -KU /tmp/utf_test.rb:
utf_test.rb:2:in `const_set': wrong constant name λ (NameError)
И не заглавная версия:
# encoding: UTF-8
Object.const_set :Λ, 'bar'
# from the command line:
> ruby -KU /tmp/utf_test.rb:
utf_test.rb:2:in `const_set': wrong constant name Λ (NameError)
Я подозреваю, что имена констант должны начинаться с заглавной буквы ASCII (должна соответствовать /^[A-Z]/
).