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