[Seasar-user:1335] Re: Mayaの式言語サポート(Re: Mayaドキュメント初稿第2版)

Yokota Takehiko takehiko
2004年 12月 7日 (火) 15:55:28 JST


横田です。

On Tue, 07 Dec 2004 00:43:43 +0900
Masataka Kurihara <[E-MAIL ADDRESS DELETED]> wrote:

>   一度目の「${」が見つかって後、「{」に対応する閉じ「}」をみていくように
> したいと思います。ご要望とおり、式言語エンジンには「(this#)${type}.name」
> を渡すように実装しますね。

ありがとうございます。^^)/ 助かります。

> > ・getName()が「NAME」という文字列を返す
> > ・toString()が「#var」という文字列を返す
> > ようなオブジェクトである場合、out.println(${type}.name)の評価結果は(1)
> > の場合は
> >   out.println(#evaluated_type.name) -> "NAME" を印字
> > となりますが、(2)の場合は
> >   out.println(#var.name) -> #varのnameプロパティの値を印字
> 
>   これはちょっと私のほうでは採否を問えませんが、前者のほうが直感的かなと
> 思います。後者はあらかじめ組み込みの変数を意識したJavaオブジェクトの作り
> になる(toString()を、式言語のオブジェクト名を返すように実装するわけです
> から)トリッキーかなと思います。式言語のための式言語になってしまうのでは
> ないでしょうか?それなら、はじめからネストしないで、out.println(#var.name)
> とだけ書けばよいように思います。もちろん、これは例であって、実際には有用
> な場面があるのかもしれませんが。。。

例が悪かったかもしれません。確かに、OGNL式の場合は(1)の方が直感的ですし
(2)が役に立つケースはあまりないのかもしれませんね。自分が想定していたのは、
例えばAntのbuild.xmlに書くプロパティ展開指定である${  }のようなものです。
例えばプロパティとして
  product.id=seasar
  prduct.version=2.0
と定義されている時、build.xml中に
  ${product.id}-${product.version}.zip
などのように書くと
  seasar-2.0.zip
のように展開されますが、それを入れ子で行なうイメージです。入れ子でプロパティ
の値展開をすると便利なケースは(OGNLの場合とは違って)時々あるんです。

>   とにかく、ひとつご要望に近い形の仕様にできたかと思いますので、今後の実
> 装の進捗をご覧になっていただきつつ、また気がつく点ありましたらコメントく
> ださい。

少なくとも、後は式言語エンジン側で頑張ればどうにかなるところまでは来ました
ので、自分にとっては大きな収穫です。要望に応えて頂いてありがとうございまし
た。

--------
  YOKOTA Takehiko
    [E-MAIL ADDRESS DELETED]




Seasar-user メーリングリストの案内