3

クロージャとは何か理解できます。私は以下の例を理解することができます。

    def list = ['a','b','c','d']
    def newList = []

    def clos = { it.toUpperCase() }
    list.collect( newList, clos )

assert newList == ["A", "B", "C", "D"]  

g:selectのドキュメントを見に行きました。私は以下を見ました。

 <g:select optionKey="id" optionValue="${{it.title?.toUpperCase()}}" name="book.title" from="${bookList}" />

$ {{it.title?.toUpperCase()}}がわかりませんでした。

オブジェクトごとにタイトルが大文字に変換されるというロジックは理解していますが、なぜ二重の「{}」が必要なのですか。

$ {it.title?.toUpperCase()}を使用しても機能しなかった理由

ドキュメントリンクここにリンクの説明を入力してください

4

1 に答える 1

5

外側の${}はクロージャーではなく、GSP式であり、内側の{}のみがクロージャーです。$ {it.title?.toUpperCase()}のみを配置した場合、パラメーターにクロージャーを渡すのではなく、実際の「it.title?.toUpperCase()」で解決された値を渡します。

于 2012-09-06T08:33:50.600 に答える