如何使用字符串作爲方法調用?如何將字符串轉換爲方法調用?
"Some Word".class #=> String
a = "class"
"Some World".a #=> undefined method 'a'
"Some World"."#{a}" #=> syntax error, unexpected tSTRING_BEG
如何使用字符串作爲方法調用?如何將字符串轉換爲方法調用?
"Some Word".class #=> String
a = "class"
"Some World".a #=> undefined method 'a'
"Some World"."#{a}" #=> syntax error, unexpected tSTRING_BEG
>> a = "class"
>> "foo".send(a)
=> String
>> a = "reverse"
>> "foo".send(a)
=> "oof"
>> a = "something"
>> "foo".send(a)
NoMethodError: undefined method `something' for "foo":String
如果你有一個包含Ruby代碼片段的字符串,你可以使用eval
。我在這裏登陸時正在尋找那個答案的問題。在完成之後(感謝ProgrammingRuby),我發佈這個以防其他人來這裏尋找我正在尋找的東西。
考慮一下我有一行代碼的場景。這就是:
NAMESPACE::method(args)
現在考慮的場景是在一個字符串變量
myvar = "NAMESPACE::method(args)"
使用send(myvar)
不執行命令。你可以這樣做:
eval(myvar)
你也可以添加參數發送:''foo「.send(」<<「,」bar「)''。 – 2011-06-11 18:44:27
@LBg哇,謝謝你讓我認識這個人! – mko 2011-06-13 15:14:11
感謝您的快速回答,文檔鏈接,我正在徘徊您如何把這個鏈接放在那裏,有沒有捷徑去做這些事情? – mko 2011-06-13 15:15:39