原です。 >以下のように一行でも書けます。長ったらしいので見た目は良くありませんが(^^;)。 > >[1, 2, 3].extend(IntArrayExt).gcd なかなかいいと思いますが、やっぱり見た目がなあ:-) 標準的にclass_function(仮称)をサポートすると、多少気持ちが 楽になるかも。 class Object def define_singleton_method(m, &b) (class<<self;self;end).instance_eval{define_method(m, &b)} end end class Module def class_function(meth) define_singleton_method(meth){|x, *a| x.send(meth, *a)} end end #TEST class Foo attr_reader :x def initialize(x); @x = x; end def sum(*a) Foo.new(a.inject(@x){|s, r| s + r.x}) end class_function :sum end a, b, c = Foo.new(1), Foo.new(2), Foo.new(3) p a.sum(b, c) p Foo.sum(a, b, c) #define_singleton_methodって無いんですね、、、