From: "NAKAMURA, Hiroshi" Date: 2003-11-20T10:19:56+09:00 Subject: [ruby-list:38814] new with module なひです。 Javaでですね、 public Enumeration values() { return new Enumeration() { public boolean hasMoreElements() { return (current < myOriginalData.size()); } public Object nextElement() { if (!hasMoreElements()) { throw new NoSuchElementException(); } final Object obj = myOriginalData.elementAt(current); current++; return obj; } private int current = 0; }; } こんなことしたりすることがあります。Enumerationというインタフェイス を指定してObjectを生成すると。 そう頻繁に欲しくなるものではありませんが、Rubyではときどき、 o = Object.new o.extend(Enumerable) def o.each myOriginalData.each do |i| yield(i) end end とかしています。 これをもっとスマートにやれるような便利定義とかないでしょうか。例えば require 'benri' o = Enumerable.new do |obj| def obj.each myOriginalData.each do |i| yield(i) end end end みたいなことができるとか。 # -talkのインタフェイス話(の利用例の一つ)になるかなと思って # 書いてみました。 今気付いた。 def new_with_module(mod) o = Object.new o.extend(mod) yield(o) o end で充分?