<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    First they ignore you
    then they ridicule you
    then they fight you
    then you win
        -- Mahatma Gandhi
    Chinese => English     英文 => 中文             
    隨筆-221  評論-1047  文章-0  trackbacks-0
    在上篇《Groovy解惑——closure中的delegate》中,我?guī)痛蠹抑v解了delegate是什么以及其作用。
    本篇將講解一下closure中的owner,以及this,delegate以及owner三者間的關(guān)系。

    先讓我們來看個例子:
    class?OwnerDemo?{
    ????def?outerClosure?
    =?{
    ????????println?
    "the?owner?of?outerClosure:?"?+?owner

    ????????def?innerClosure?
    =?{?
    ????????????println?
    "the?owner?of?innerClosure:?"?+?owner?

    ????????????def?innestClosure?
    =?{
    ????????????????println?
    "the?owner?of?innestClosure:?"?+?owner
    ????????????}
    ????????????innestClosure()
    ????????}
    ????????innerClosure()
    ????}
    }

    def?ownerDemo?
    =?new?OwnerDemo()
    ownerDemo.outerClosure()
    運行結(jié)果:
    the owner of outerClosure: OwnerDemo@eccfe7
    the owner of innerClosure: OwnerDemo$_closure1@4745cf
    the owner of innestClosure: OwnerDemo$_closure1_closure2@109dcbb
    注意:OwnerDemo$_closure1指的是outerClosure的類名,而OwnerDemo$_closure1_closure2指的是innerClosure的類名
    通過這個例子,大家就清楚了,closure的owner引用的是該closure的‘擁有者’

    那么this, delegate以及owner有什么關(guān)系呢?
    隱式變量delegate的默認值為owner,
    如果closure沒有‘嵌套’在其他closure中,那么該closure的owner的值為this;
    否則該closure的owner引用的是‘直接包含’該closure的closure


    讓我們用事實來說話吧:
    class?OwnerDemo?{
    ????def?outerClosure?
    =?{
    ????????println?
    "the?owner?of?outerClosure:?"?+?owner
    ????????println?
    "the?delegate?of?outerClosure:?"?+?delegate
    ????????println?
    "this?in?the?outerClosure:?"?+?this
    ????????def?innerClosure?
    =?{?
    ????????????println?
    "the?owner?of?innerClosure:?"?+?owner?
    ????????????println?
    "the?delegate?of?innerClosure:?"?+?delegate?
    ????????????println?
    "this?in?the?innerClosure:?"?+?this?
    ????????????def?innestClosure?
    =?{
    ????????????????println?
    "the?owner?of?innestClosure:?"?+?owner
    ????????????????println?
    "the?delegate?of?innestClosure:?"?+?delegate
    ????????????????println?
    "this?in?the?innestClosure:?"?+?this
    ????????????}
    ????????????println?
    "innestClosure:?"?+?innestClosure
    ????????????innestClosure()
    ????????}
    ????????println?
    "innerClosure:?"?+?innerClosure
    ????????innerClosure()
    ????}
    }

    def?ownerDemo?
    =?new?OwnerDemo()
    def?outerClosure?
    =?ownerDemo.outerClosure
    println?
    "outerClosure:?"?+?outerClosure
    outerClosure()
    運行結(jié)果:
    outerClosure: OwnerDemo$_closure1@10cc9b4
    the owner of outerClosure: OwnerDemo@8e7f54
    the delegate of outerClosure: OwnerDemo@8e7f54
    this in the outerClosure: OwnerDemo@8e7f54
    innerClosure: OwnerDemo$_closure1_closure2@1eb1db2
    the owner of innerClosure: OwnerDemo$_closure1@10cc9b4
    the delegate of innerClosure: OwnerDemo$_closure1@10cc9b4
    this in the innerClosure: OwnerDemo@8e7f54
    innestClosure: OwnerDemo$_closure1_closure2_closure3@12a78ee
    the owner of innestClosure: OwnerDemo$_closure1_closure2@1eb1db2
    the delegate of innestClosure: OwnerDemo$_closure1_closure2@1eb1db2
    this in the innestClosure: OwnerDemo@8e7f54

    大家可以從其中值的關(guān)系看出this, delegate以及owner三者的關(guān)系與我們之前所說的相符 :)

    連夜連發(fā)2篇文章以回報‘蛟龍居’的常客 :)

    附:朝花夕拾——Groovy & Grails


    posted on 2007-12-23 01:43 山風(fēng)小子 閱讀(2984) 評論(3)  編輯  收藏 所屬分類: Groovy & Grails
    主站蜘蛛池模板: 精品久久久久国产免费| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 在线精品亚洲一区二区三区| 香蕉免费在线视频| 亚洲午夜精品国产电影在线观看| 青娱分类视频精品免费2| 免费精品国自产拍在线播放| 亚洲伊人久久大香线蕉苏妲己| 国产成人高清精品免费软件| 久久99精品国产免费观看| 亚洲成在人线在线播放无码| 亚洲中文字幕不卡无码| 成年美女黄网站18禁免费| 国内精品99亚洲免费高清| 亚洲真人无码永久在线观看| 国产亚洲婷婷香蕉久久精品| 免费高清小黄站在线观看| 小草在线看片免费人成视久网| 国产成人亚洲精品电影| 亚洲第一网站免费视频| 国产gv天堂亚洲国产gv刚刚碰| 四虎www免费人成| 日本xxxx色视频在线观看免费| 免费大片av手机看片| va天堂va亚洲va影视中文字幕| 亚洲午夜久久久久妓女影院| 日本高清免费网站| 67194熟妇在线永久免费观看| 中文在线观看免费网站| 亚洲爆乳大丰满无码专区| 亚洲欧洲国产综合| 亚洲AV成人一区二区三区AV| 亚洲成A∨人片天堂网无码| 蜜桃视频在线观看免费网址入口| 国产va在线观看免费| 免费无码午夜福利片| 亚洲熟妇无码八V在线播放| 亚洲日韩中文字幕天堂不卡| 亚洲成在人线av| 中文字幕精品亚洲无线码一区应用 | 亚洲熟妇色自偷自拍另类|