【问题标题】:What does "foo?.bar" mean in Groovy? [duplicate]Groovy 中的“foo?.bar”是什么意思? [复制]
【发布时间】:2015-07-24 10:12:36
【问题描述】:
#{if adsonuiAssetList.size()>0}
    #{list items:adsonuiAssetList, as:'adsonui'}
        <div class="imageElement">
            <h3>Asset : ${adsonui?.productname}(${adsonui?.AssetId})&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Advertiser : ${adsonui?.campaign.advertiser.contact_person}(${adsonui?.campaign.advertiser.id})</h3>
            <p></p>
            <a href="@{Assets.showAssetDetails()}?assetid=${adsonui?.AssetId}"  title="${adsonui?.productname}" class="open"></a>
            <img src="@{Assets.getAssetFileForSlideShow(adsonui?.AssetId,adsonui?.campaign?.mode_of_advertisement,870,240)}"  alt="${adsonui?.productname}" class="full" />
            <img src="@{Assets.getAssetFileForSlideShow(adsonui?.AssetId,adsonui?.campaign?.mode_of_advertisement,150,150)}"  alt="${adsonui?.productname}" class="thumbnail" />
    </div>
    #{/list}
#{/if}

谁能解释一下 ${adsonui?.productname} 是什么?

【问题讨论】:

    标签: groovy syntax


    【解决方案1】:

    ?可以在 foo 为 null 的情况下避免 NPE 异常。

    参见 axample - 第一个 println 给出 null 第二个失败

    def foo
    
    println foo?.bar
    
    null
    
    println foo.bar
    
    Caught: java.lang.NullPointerException: Cannot get property 'bar' on null object 
    

    即您无需测试 foo 是否为 null 并决定是否可以引用 bar

    【讨论】:

      【解决方案2】:

      如果adsonui 不为空,${adsonui?.productname} 将返回 adsonui.productname

      null 如果为空。

      它被称为Safe-Navigation Operator

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-10
        • 2017-03-04
        • 2018-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多