Необязательные символы в Ruby для метода с заглавной буквой в верхнем регистре?
Я только начал использовать IronRuby (но поведение, кажется, непротиворечивое, когда я тестировал его на простом Ruby) для DSL в моем приложении .NET - и как часть этого я определяю методы, которые будут вызываться из DSL через define_method.
Тем не менее, я столкнулся с проблемой, связанной с необязательными паренами при вызове методов, начинающихся с заглавной буквы.
Учитывая следующую программу:
class DemoClass
define_method :test do puts "output from test" end
define_method :Test do puts "output from Test" end
def run
puts "Calling 'test'"
test()
puts "Calling 'test'"
test
puts "Calling 'Test()'"
Test()
puts "Calling 'Test'"
Test
end
end
demo = DemoClass.new
demo.run
Запуск этого кода в консоли (с использованием обычного ruby) приводит к следующему выводу:
ruby .\test.rb
Calling 'test'
output from test
Calling 'test'
output from test
Calling 'Test()'
output from Test
Calling 'Test'
./test.rb:13:in `run': uninitialized constant DemoClass::Test (NameError)
from ./test.rb:19:in `<main>'
Я понимаю, что соглашение Ruby состоит в том, что константы начинаются с заглавной буквы, а общее соглашение об именах для методов в Ruby строчное. Но парни действительно убивают мой синтаксис DSL в данный момент.
Есть ли способ обойти эту проблему?