0

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
4

1 に答える 1

2

sendRubyで行く方法です。プライベート メソッドの呼び出しが許可されているために気に入らない場合は、public_send代わりに次を使用します。

Math.public_send(condition ? :sin : :cos, 0.5)
于 2012-11-10T14:10:22.007 に答える