Optional parens in Ruby für Methode mit Großbuchstaben?

Ich habe gerade mit IronRuby für eine DSL in meiner .NET-Anwendung begonnen (aber das Verhalten scheint konsistent zu sein, als ich es in Ruby getestet habe) - und als Teil davon definiere ich Methoden, die über define_method von der DSL aufgerufen werden sollen.

Beim Aufrufen von Methoden, die mit einem Großbuchstaben beginnen, ist jedoch ein Problem bezüglich optionaler Parens aufgetreten.

Gab das folgende Programm:

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

Wenn Sie diesen Code in einer Konsole ausführen (mit Ruby), erhalten Sie die folgende Ausgabe:

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>'

Mir ist klar, dass die Ruby-Konvention darin besteht, dass Konstanten mit einem Großbuchstaben beginnen und dass die allgemeine Namenskonvention für Methoden in Ruby Kleinbuchstaben ist. Aber die Parens bringen momentan wirklich meine DSL-Syntax um.

Gibt es irgendeinen Weg, um dieses Problem zu umgehen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage