Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
grails/groovy大括号语法问题_Grails_Groovy - Fatal编程技术网

grails/groovy大括号语法问题

grails/groovy大括号语法问题,grails,groovy,Grails,Groovy,我正在处理一个我不理解大括号的作用的例子——下面第二个“out”语句中“Logout”周围的大括号。我猜字符串是作为闭包传递的,但我没有得到超出此范围的语法。你能澄清一下吗?注意,代码的输出如下所示: 无名氏[登出] 类登录glib{ def登录控制={ if(request.getSession(false)&&session.user){ outlink标签包含属性和主体,作为常规GSP标签,它的名称如下: <g:link action="logout" controller="us

我正在处理一个我不理解大括号的作用的例子——下面第二个“out”语句中“Logout”周围的大括号。我猜字符串是作为闭包传递的,但我没有得到超出此范围的语法。你能澄清一下吗?注意,代码的输出如下所示:

无名氏[登出]


类登录glib{
def登录控制={
if(request.getSession(false)&&session.user){

outlink
标签包含属性和主体,作为常规GSP标签,它的名称如下:

<g:link action="logout" controller="user">Logout</g:link>
注销

要像现在这样将其作为方法调用,您需要一种方法来传递文本(“注销”)以在链接中呈现。如果查看标记的源(单击底部的“Show source”),您将看到第二个参数是
body
,它是一个闭包(虽然这在代码中并不清楚,但对于双参数标记来说总是如此)。
{“Logout”}
是一个返回“Logout”的闭包,因为它是最后一个表达式,所以它被用作主体。

链接
标记接受属性和主体,作为常规GSP标记,它被称为:

<g:link action="logout" controller="user">Logout</g:link>
注销

要像现在这样将其作为方法调用,您需要一种方法来传递文本(“注销”)以在链接中呈现。如果查看标记的源(单击底部的“Show source”),您将看到第二个参数是
body
,它是一个闭包(虽然这在代码中并不清楚,但对于2参数标记来说总是如此)。
{“Logout”}
是一个返回“Logout”的闭包,因为它是最后一个表达式,所以它被用作主体。

实际上输出应该是

Hello John Doe [Logout]
本质上,如果有一个会话和一个用户,那么写Hello user并创建一个指向带有logout标签的注销操作的链接


{“Logout”}是一个闭包,相当于{return“Logout”},因为如果没有明确说明,则最后一个语句用于返回值。

实际上,输出应该是

Hello John Doe [Logout]
本质上,如果有一个会话和一个用户,那么写Hello user并创建一个指向带有logout标签的注销操作的链接


{“Logout”}是一个相当于{return“Logout”}的闭包,因为如果没有明确说明,则最后一个语句用于返回值。

我无法获得如下输出

Hello John Doe [Logout]
这是我得到的输出

你好,伊多[


我无法获得如下输出

Hello John Doe [Logout]
这是我得到的输出

你好,伊多[


问题:{“Logout”}之前不应该有一个逗号,因为它是传递的第二个参数吗?例如,根据Groovy 2参数闭包示例:def printSum={a,b->print a+b}printSum(5,7)不,当闭包是最后一个参数时,逗号是可选的。实际上,逗号不是可选的…将闭包放在调用的括号内是可选的。如果闭包被传递到括号内的函数中,则需要一个逗号,即func(a){clos}=func(a,{clos})问题:{“Logout”}之前不应该有一个逗号,因为它是传递的第二个参数吗?例如,根据Groovy 2参数闭包示例:def printSum={a,b->print a+b}printSum(5,7)不,当闭包是最后一个参数时,逗号是可选的。实际上,逗号不是可选的…将闭包放在调用的括号内是可选的。如果闭包被传递到括号内的函数中,则需要一个逗号,即func(a){clos}=func(a,{clos})感谢您对隐性回报的澄清/提醒。感谢您对隐性回报的澄清/提醒。