なひです。

class Hash
  def method_missing( msg_id, *a, &b )
    self[ msg_id ] || self[ msg_id.id2name ]
  end
end

def foo
  return "foo" => 1, :bar => 2
end

。。。みたいなお遊びは本題ではありません。

> From: Shin-ichiro HARA [mailto:sinara / blade.nagaokaut.ac.jp] 
> Sent: Monday, February 25, 2002 3:53 PM

> >でも、いきなり
> >インスタンス作る(で、そのインスタンスのクラスのメンバ定義は
> >忘れちゃう)というのは、いくら分かり易くても、
> >実際にはあまり使われなさそうな気がします。
> 
> 鋭い指摘。しかし各メンバに何にも関連がない時、インスタンスの属
> するクラスには興味がないですよね。例えば、これが使われる場面と
> しては、メソッドの出入り口で、
> 
>    return "matz", 104
> 
> の代わりに
> 
>    return Struct(:name => "matz", :age => 104)
> 
> みたいに使うことを主に考えていのです。だから、メンバ定義は
> むしろメソッドの仕様に属するので、忘れられないわけ。

メソッドの入り口に関してはキーワード引数で解決されそうですね。
出口については確かにそういう用途はありそうな気がします。
個人的には、外からは見えない型が返ってくるとなんかどきどき
しちゃうんですが。。。染まってんのかな。

この用途なら原さんが最初に書かれているように、
クラスを作るよりオブジェクトひとつ作って特異メソッドで
respond_to?を保障するというやり方がよさそうに思います。
keyをSymbol or Stringに固定してHash#{key}でアクセスできる
YAHashがあればよい?

def foo
  return YAHash[ :name => "matz", :age => 104 ]
end

それにYAHashなんてあんまりな名前じゃなくStructという名前を付けると

  return Struct[ :name => "matz", :age => 104 ]

となって、原さん案にちょっと近いかも。