它是关于Ruby的.
我有一个Box对象,其中包含"panel1","panel2",......,"panel5"等属性.而不是调用Box.panel1,Box.panel2,...我想把它称为Box.method_call("panel"+ some_integer.to_s).
我确定有这样的方式,但是怎么回事?
你的,乔恩.
鉴于:
class Box
def self.foo
puts "foo called"
end
def self.bar(baz)
puts "bar called with %s" % baz
end
end
Run Code Online (Sandbox Code Playgroud)
你可以使用eval:
eval("Box.%s" % 'foo')
eval("Box.%s('%s')" % ['bar', 'baz'])
Run Code Online (Sandbox Code Playgroud)
使用send可能更喜欢:
Box.send 'foo'
Box.send 'bar', 'baz'
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
你快到了.您只需要将"method_call"替换为"send",这就是在Ruby中实际调用方法的方式 - 将消息发送到对象.
class Box
def panel1
puts 1
end
def panel2
puts 2
end
end
box = Box.new #=> #<Box:0x2e10634>
box.send("panel1")
1
panel = 2
box.send("panel#{panel}")
2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |