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?