0

次のように gsp ファイルにリンクを作成するグルーヴィーな構文に出くわしました。

class LoginTagLib {
def loginControl = {
out << """[${link(action:"login",controller:"user"){"Login"}}]"""
}}

私はそれが最終的にhtmlでこれに変わることを知っています:

<a href="/racetrack/user/login">Login</a>

ただし、理解できない構文の部分が 2 つあります。

  1. わかりません${link(action:"login",controller:"user"){"Login"}}:

    • $()文字列補間に使用されるを取得します。
    • 私も取得しlink(action:"login",controller:"user")ます。渡された引数は2つだけですlink
    • しかし、{"Login"}背後で何をしているのですか?
  2. """[ ]"""全体を囲むために使用されている がわかりません。 のペアを"取り除こうとしましたが、もう機能しません。だから、それは私にそれが重要であることを証明しています.

光を当てるのを手伝ってくれる人はいますか?

ありがとう

4

1 に答える 1

2
  1. groovy では、関数の最後の引数がクロージャである場合、この構文foo(arg1, arg2, ..., { ... })を に変更できますfoo(arg1, arg2, ...) { ... }。これがここで起こることです。 の最後の引数はlink()、リンクのテキスト表現に評価されるクロージャです
  2. ''' と ''' は複数行の文字列を許可します。""" """ は同じですが、変数置換もサポートしています
于 2012-11-19T04:57:43.410 に答える