Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了大括号语法在Groovy中意味着什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这个语法在Groovy中意味着什么?

class CreatemessagePage extends Page {
    static at = { assert title == 'messages : Create'; true }
    static url = 'messages/form'
    static content =  {
        submit { $('input[type=submit]') }
        MyVeryStrangeForm { $('form') }
        errors(required:falsE) { $('label.error,.alert-error')?.text() }
    }
}

(摘自Spring MVC Test HtmlUnit manual)

问题是关于Groovy,我想用Groovy的术语知道答案.

什么是内容?它是静态变量吗?它的名称随机的还是由Page的基类预定义的?

它之后是什么=(等号)?它是一个赋值运算符吗?

在=的右边是什么?这是封闭吗?或者如果这是一个匿名类?或者如果这些是相同的?

什么是花括号内提交?

这是变量吗?为什么之后没有赋值运算符呢?

这是一个函数定义吗?我可以在Groovy中的任意位置定义函数吗?如果这是一个函数定义,那么什么是错误呢?

submit是一个函数调用,接收{$(‘input [type = submit]’)}作为参数吗?如果是,那么可以定义此功能的位置?例如,MyVeryStrangeForm定义在哪里(无处)?

如果这是函数调用,那么它将无法工作,因为它未定义…

解决方法

快速回答所有问题:它是一个代码块,如匿名函数,在Groovy中称为闭包.

http://www.groovy-lang.org/closures.html

在Groovy中,您可以引用/传递/设置此类闭包,就像在任何功能语言中一样.

所以这:

static at = { assert title == 'messages : Create'; true }

表示将字段at设置为此闭包(通知,不是闭包执行的结果,而是闭包本身,作为代码块).在那里省略了at的类型,但它可以是静态def at或静态Object at,或静态Closure at

代码可以在以后的任何时间执行,在不同的上下文中,定义标题等.

这个:

submit { $('input[type=submit]') }

表示使用closure作为参数调用函数submit.

如果你想编写这样的自己的函数,它应该是这样的

def submit(Closure codE) {
    code.call()
}

括号可以省略,因此可以写为submit({$(‘input [type = submit]’)}).对于其他功能也一样,它可能是println’Hello world!’而不是println(‘你好世界).

将闭包定义为最后一个参数也是一种常见做法,例如:

def errors(Map opts,Closure codE) {
  ....
}

在这种情况下,你可以像往常一样传递第一个参数,用括号括起来,然后在外面关闭

errors(required:falsE) { ...... }

和…一样:

errors([required: false],{ ..... })

大佬总结

以上是大佬教程为你收集整理的大括号语法在Groovy中意味着什么?全部内容,希望文章能够帮你解决大括号语法在Groovy中意味着什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。