Ruby中的函数指针,它不违反访问规则

时间:2012-11-10 13:54:12

标签: ruby function-pointers member-function-pointers

在C ++中,我可以这样做:

(condition ? sin : cos)(0.5);

typedef std::deque<int> T;
(T().*(condition ? &T::push_back : &T::push_front))(1);

Ruby中的等价物是什么?

我知道我可以使用sendmethod,但他们允许我调用private方法。

# String#puts and String#print are private
("".method condition ? :puts : :print).call

1 个答案:

答案 0 :(得分:2)

send是Ruby的发展方向。如果您不喜欢它,因为它允许调用私有方法,请改为使用public_send

Math.public_send(condition ? :sin : :cos, 0.5)