Ruby でクラス名と同名のメソッドを定義する

Ruby ではクラスと同じ名前のメソッドを定義する事ができます。

class X
end

def X(a = nil)
  "X(#{a})"
end

# 何もつけなかった場合はクラスを参照
p X       # => X
# メソッドぽい呼び出しであればメソッドを参照
p X()     # => "X()"
p X 42    # => "X(42)"

この手のやつでよく利用されているのは Kernel.#Array メソッドや Kernel.#Integer メソッドですねー。

Array(arg) もクラスではなくてメソッドを呼び出しています。