<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
    主站蜘蛛池模板: 男人和女人高潮免费网站| 亚洲专区中文字幕| yellow视频免费看| 九月婷婷亚洲综合在线| 在线精品自拍亚洲第一区| 国产自产拍精品视频免费看| 国产成人精品日本亚洲专一区| 日韩免费一区二区三区在线播放| 亚洲视频一区网站| 免费在线观看h片| 亚洲国产成人精品无码区在线网站| 91免费国产在线观看| 亚洲中文字幕无码一去台湾 | 亚洲国产精品成人午夜在线观看| 最近中文字幕免费mv视频8| 亚洲日本一线产区和二线产区对比| 浮力影院第一页小视频国产在线观看免费 | 在线精品自拍亚洲第一区| 国产18禁黄网站免费观看| fc2免费人成为视频| 久久久久亚洲AV片无码| 亚洲免费一级视频| 久久亚洲中文无码咪咪爱| 亚洲日韩国产精品乱| 国产免费一区二区三区在线观看| 亚洲黑人嫩小videos| 成人免费视频试看120秒| 污污视频免费观看网站| 亚洲午夜久久久久妓女影院| 男的把j放进女人下面视频免费| 久久久久亚洲av无码专区| 成人免费a级毛片无码网站入口 | 亚洲大码熟女在线观看| 亚洲伊人久久成综合人影院| 久久精品视频免费看| avtt天堂网手机版亚洲| 亚洲国产黄在线观看| 免费人成视频在线观看网站| 亚洲大尺度无码无码专线一区| 国产亚洲AV无码AV男人的天堂| 性做久久久久久免费观看|