2012-01-24 51 views
0

下面是我想要做的:用戶輸入一個字符串。該字符串包含兩個部分,將是這樣的:我應該如何在Ruby中編程

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

這方面的一個具體的例子是:

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

然後我會解析這個字符串,實例化的TwitterEvent一個實例,在調用該方法它。然後做同樣的事情PersistenceAction

什麼是這種類型的應用程序的最佳「設計」?我將如何動態實例化來自分析字符串的類,然後調用方法?而且這種方法可能會有爭論?我將如何檢測/處理錯誤?從名稱字符串

+1

與一個稍微不同的輸入格式一樣,也就是說,一個合法的散列容易。 –

回答

1

獲取類對象:

Kernel.const_get('TwitterEvent') 

調用對象上的任意方法:

event.send(:new_tweet) 

剩下的就是給你。 :-)

1

你想使用respond_to? and send。發送允許您使用符號調用方法。您可以使用to_sym將字符串轉換爲符號。

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 
相關問題