每个和每个WInIndex实际上是方法吗?如果是这样,他们有什么论据呢?
在groovy文档中有一些这样的例子:
def numbers = [ 5,7,9,12 ]numbers.eachWithIndex{ num,IDx -> println "$IDx: $num" } //prints each index and number
那我知道这个数字是一个数组。上述语句中的num和IDx是什么?什么是 – >运算符做?
我知道$ IDx和$ num打印值,但是IDx和num如何自动与数组的索引和内容相关联?这背后的逻辑是什么?请帮忙。
解决方法 这些是简单的方法,但它们遵循一个特定的模式 – 他们将Closure作为最后一个参数。关闭是一种功能,您可以在适用时传递和呼叫。例如,eachWithIndex可能看起来像这样(大致):
voID eachWithIndex(Closure operation) { for (int i = 0; this.hasNext(); i++) { operation(this.next(),i); // Here closure passed as parameter is being called }}
这种方法允许构建通用算法(如在项目上迭代),并通过传递不同的闭包来在运行时改变具体的处理逻辑。
关于参数部分,如上例所示,我们使用两个参数(当前元素和当前索引)来调用闭包(operation)。这意味着eachWithIndex方法期望不仅接收任何封闭,而且接收这两个参数。从语法前景来定义闭包定义中的参数,如下所示:
{ elem,index -> // logic }
所以 – >用于将闭包定义的一部分与其逻辑分开。当一个闭包只有一个参数时,它的参数定义可以省略,然后该参数可以在闭包的范围内被访问,其名称为(第一个参数的隐含名称)。例如:
[1,2,3].each { println it}
它可以这样重写:
[1,3].each({ elem -> println elem})
当您看到Groovy语言添加了一些语法糖,使这样的结构看起来更漂亮。
总结以上是内存溢出为你收集整理的EveryWithIndex groovy声明全部内容,希望文章能够帮你解决EveryWithIndex groovy声明所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)