有馬@FITECです。

| まつもと ゆきひろです

| ああ、私はRubyの設計にあたって外見と意味の一致に結構気を使っ
| ているので(例外はローカル変数と引数無しメソッド)、withのよう
| な手法によって、一見ローカル変数でも実はメソッド呼び出しやイ
| ンスタンス変数アクセスとかいうのが増えるのをあまり望んでいま
| せん。

ローカル変数と引数無しメソッドが例外というのはどのようなことでしょう?
Kernel method のことですか?

| とはいえ .<識別子> のような形式は美しくないと感じています。
| 単なる視覚的な好みですが。

私も始めて見たときは驚きました。
省略の明示であることはわかるのですが、指摘があったように、
入れ子になったときになにを省略したかがわからなくなりますね。
# 内部形式にコンパイルするときに解決する?

最近 Delphi <-> Ruby のような作業を行っているのであげた希望でしたが、
紹介いただいたローカル変数を使う方法で実用に足るのがわかったので、
特に必要ではなくなってしまいました。

with foo.bar.baz.zot do
begin
  height := width;
  top    := left
end

  a = foo.bar.baz.zot
  a.height = a.width
  a.top    = a.left

入れ子になる場合の解決方法を思いつかないので、いまのやりかたで
よいのだと思います。

--
 有馬 康弘 <fit0298 / fitec.co.jp>