【Groovy】闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )
文章目錄
- 一、閉包中調(diào)用 Groovy 腳本中的方法
- 二、owner 與 delegate 區(qū)別
- 三、閉包中調(diào)用 Groovy 對(duì)象中的方法
一、閉包中調(diào)用 Groovy 腳本中的方法
在 Groovy 腳本中 , 在 Closure 閉包中 , 可以直接調(diào)用 Groovy 腳本中定義的方法 ;
def fun() {println "fun" }def closure = {fun() }closure()執(zhí)行上述 Groovy 腳本結(jié)果如下 :
fun二、owner 與 delegate 區(qū)別
在 Closure 閉包中 , 其 owner 就是創(chuàng)建閉包時(shí)所在的環(huán)境 , 這是無(wú)法改變的 ;
但是 Closure 閉包對(duì)象的 delegate 成員是可以修改的 ;
三、閉包中調(diào)用 Groovy 對(duì)象中的方法
在閉包中 , 可以直接調(diào)用 Groovy 腳本中定義的方法 ;
但是如果想要在閉包中 , 調(diào)用實(shí)例對(duì)象的方法 , 就必須設(shè)置閉包的 delegate 成員 ;
如下代碼中 , 想要在閉包中 , 調(diào)用 Test 對(duì)象的 fun 方法 , 在執(zhí)行閉包之前 , 必須將 閉包的 delegate 設(shè)置為 Test 實(shí)例對(duì)象 ;
closure.delegate = new Test()之后使用
closure()調(diào)用閉包 , 在閉包中執(zhí)行 fun 方法 , 就會(huì)在代理 delegate 成員 , 即 Test 實(shí)例對(duì)象中 , 查找 fun 方法 ;
代碼示例 :
class Test {def fun() {println "fun"} }// 閉包中不能直接調(diào)用 Test 對(duì)象中的方法 // 此時(shí)可以通過改變閉包代理進(jìn)行調(diào)用 def closure = {fun() }closure.delegate = new Test() closure()執(zhí)行結(jié)果 :
fun總結(jié)
以上是生活随笔為你收集整理的【Groovy】闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】Groovy 闭包使用报错
- 下一篇: 【Groovy】闭包 Closure (