【问题标题】:What is the status of applying the "values" function to a hash or array reference?将“值”函数应用于哈希或数组引用的状态如何?
【发布时间】:2012-10-10 02:25:34
【问题描述】:

鉴于$struct 是一个可以是散列或数组引用的数据结构,我有一些看起来像这样的代码:

for (ref($struct) eq "HASH" ? values %$struct : values @$struct) {  
    # process $_
    ...
}

我想改用 values 函数的新功能(接受对未受祝福的哈希或数组的引用)来编写它,这适用于我的 5.14.2 版本:

for (values $struct) {  
    # process $_ 
    ...
}

漂亮多了!

但是values 的文档说这个功能是“高度实验性的”。它现在已经发布了几个版本(据我所知,从 5.12 到 5.16.0)。有谁知道是什么状态?实验进展如何?

【问题讨论】:

    标签: perl


    【解决方案1】:

    它被标记为实验性的,因为它是一个有争议的变化。这是有争议的,因为它不适用于所有对哈希的引用。* 自引入该功能以来没有发现任何新问题,但我认为没有人期望会发现任何新问题。


    * — values($hash) 可能会失败,而 values(%$hash) 会成功。您的原始代码存在完全相同的问题,因此values 的这种“限制”对您来说不是问题。

    【讨论】:

    • 我不明白我的原始代码为什么会失败,因为它使用了%$hash,你能进一步解释一下吗?另外,我想知道的是,是否有人知道这种变化是否即将被恢复,或者被认为是永久性的,或者它会永远是“实验性的”。
    • 祝福哈希失败。通过重载呈现哈希接口的对象失败。
    • 文档说它一定是一个无福的参考。
    • 当然是。如果不是已知问题,怎么可能引起争议?
    猜你喜欢
    • 2011-11-01
    • 2012-06-19
    • 1970-01-01
    • 2013-12-04
    • 2021-09-20
    • 2012-09-21
    • 2011-07-26
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多