我应该如何在Ruby中编程

时间:2012-01-24 05:25:31

标签: ruby

以下是我要做的事情:用户输入一个字符串。该字符串包含2个部分,如下所示:

{EventClass: someMethod=>arg1, arg2, arg3....}, {Action: someMethod=>arg1, arg2, arg3....}

具体的例子是:

{TwitterEvent: newTweet=>arg1, arg2, arg3....}, {PersistenceAction: saveToHardDrive=>arg1 arg2...}

然后我将解析此字符串,实例化TwitterEvent的实例,在其上调用该方法。然后对PersistenceAction

执行相同的操作

此类应用的最佳“设计”是什么?如何从解析后的字符串动态实例化类,然后调用方法?可能,该方法会有参数?我如何检测/处理错误?

3 个答案:

答案 0 :(得分:1)

从名称字符串中获取类对象:

 Kernel.const_get('TwitterEvent')

在对象上调用任意方法:

 event.send(:new_tweet)

剩下的由你决定。 : - )

答案 1 :(得分:1)

您想使用respond_to? and send 。发送允许您使用符号调用方法。您可以使用to_sym将字符串转换为符号。

答案 2 :(得分:0)

你去吧

str = "{TwitterEvent: newTweet=>arg1, arg2, arg3}, {PersistenceAction: saveToHardDrive=>arg1, arg2}"

regexp = /^{(\w+):\s*(\w+)=>([^}]+)},\s*{(\w+):\s*(\w+)=>([^}]+)}$/

regexp.match(str).to_a[1..-1].each_slice(3) do |s|
  # s[0] .. class name
  # s[1] .. class method
  # s[2] .. method parameters as a single string
  # do something similar to Sergio Tulentsev suggestion
end