EveryWithIndex groovy声明
我是新来的,我一直在面对一些问题,了解每个{}和eachwithindex {}语句。
每个和每个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语言添加了一些语法糖,使这样的结构看起来更漂亮。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |