在C ++中,我可以这样做:
(condition ? sin : cos)(0.5);
或
typedef std::deque<int> T;
(T().*(condition ? &T::push_back : &T::push_front))(1);
Ruby中的等价物是什么?
我知道我可以使用send
或method
,但他们允许我调用private
方法。
# String#puts and String#print are private
("".method condition ? :puts : :print).call
答案 0 :(得分:2)
send
是Ruby的发展方向。如果您不喜欢它,因为它允许调用私有方法,请改为使用public_send
:
Math.public_send(condition ? :sin : :cos, 0.5)