Ruby で無名クラスを定義する

class ではなくて Class.new から定義すればよいみたい。

[コード]

# Class.new でクラスを定義
# メソッドはブロック内で定義する
X = Class.new {
    def self.name
        "X"
    end

    def func
        puts "homu"
    end
}

puts X.name

x = X.new
x.func


def twice a, b
    a + b
end

# 引数内でクラスを定義して渡したりとか
puts twice(Class.new {
    def + a
        10 + a
    end
}.new, 4)

[出力]

X
homu
14

引数内でクラスを定義したい場合は便利。