Ruby 如何使用嵌入的方法参数 调用另一个方法,而不仅仅是把

Ruby how to use method parameter embedded in call to another method other than just puts

提问人:Andrew Walker 提问时间:2/9/2023 更新时间:2/9/2023 访问量:33

问:

在Ruby中,我想在对Net::HTTP new的调用中使用REST动词的输入参数(如'Post'),但我无法弄清楚如何在语句中嵌入该参数。我有一个名为 restVerb 的参数,它可以很好地打印,但不能在 - 我收到 Net::HTTP:Class (NoMethodError) 的请求,所以它显然无法识别语句中的参数值。我可以使用案例语句,但想让它更通用。我做错了什么?puts "Verb is #{restVerb}"request = Net::HTTP::#{restVerb}.new(uri)undefined method

我已经尝试了上述语法和其他一些语法,或者我是 Ruby 的新手,所以请对我温柔一点。request = Net::HTTP::restVerb.new(uri)request = Net::HTTP::$restVerb.new(uri)

Ruby 方法 参数

评论


答:

1赞 anothermh 2/9/2023 #1

使用 Object.const_get 将字符串转换为实际常量:

klass = Object.const_get("Net::HTTP::#{restVerb}")
=> Net::HTTP::Post

klass.new(uri)
=> #<Net::HTTP::Post POST>

评论

0赞 Andrew Walker 2/9/2023
是的,这奏效了。一百万年后我都不会弄清楚这一点。谢谢
4赞 Stefan 2/9/2023
const_get不限于 .您可以使用并避免字符串插值。ObjectNet::HTTP.const_get(restVerb)