我想知道是否可以做这样的事情:
class Something
def A
puts "A"
end
def B
puts "B"
end
def C
puts "C"
end
def D
puts "D"
end
end
y = Something.new
x = Random.new
x.rand(y)
然后得到" Something"的随机结果。类
答案 0 :(得分:4)
单行答案是:
Something.new.send(Something.instance_methods(false).shuffle.first)
<强>释强>
Something.instance_methods(false)
# Will give you [:A, :B, :C, :D]
Something.instance_methods(false).shuffle.first
# Will give you a random method out of it
Something.new.send(<method name>)
# Will call that random method and give you output
FROM COMMENTS (一个很好的建议)
您可以像以下一样使用它:
Something.instance_methods(false).sample
代替Something.instance_methods(false).shuffle.first
答案 1 :(得分:0)
如果你真的想这样做 -
x.send(x.instance_methods(false).sample, y)
当然,如果目标方法不接受论证,这将无法奏效。
答案 2 :(得分:0)
"