Ruby にはファースト クラスの関数はありません。プロシージャとラムダがありますが、これらはかなりのオーバーヘッドを必要とすることで有名です。(Python には、明らかにオーバーヘッドのないファースト クラスの関数があります。)次のように、匿名クラスを使用することで、ファースト クラスの関数をもう少し作業でシミュレートできることに気付きました。
f = Class.new { def self.f; puts 'hi'; end }
def g(fun); fun; end
g(f.f)
# => "hi"
誰かがより良い方法を知っていますか?