gpt4 book ai didi

perl - 访问时触发数组元素计算

转载 作者:行者123 更新时间:2023-12-01 05:21:33 24 4
gpt4 key购买 nike

是否有任何 Perl API 允许我在读取数组元素时执行代码?我在想(或者也许可以?)Variable::Magic我该怎么做?最终目标基本上是在任何访问时重新计算元素值(延迟评估),但我不想限制像 grepmap 这样的函数natatime 无法使用。

最佳答案

CPAN 上有几个用于惰性数组的模块。 Data::Lazy , Variable::Lazy , Tie::Array::LazyVariable::Magic .

Data::Lazy 和 Tie::Array::Lazy 都并列。 Tying 非常慢,比普通数组慢 10 倍左右,比对象慢 3 倍左右。绑定(bind)可能会扼杀惰性带来的性能优势。

Variable::Lazy 是不同的。它实际上是在编译时使用 Devel::Declare 魔法将变量替换为一段代码。不幸的是,它似乎只适用于标量。 :-/

变量::魔法是……魔法。它更多地用于注释变量而不是控制它们。

我会建议相反的问题。把这个东西写成一个对象,它可以随心所欲地懒惰。这比领带更快、更灵活,而且可能更有特色,而且错误更少。对于 grep、map 等,提供 overload所以它可以用作数组引用。重载不会懒惰,但无论如何 grep 和 map 必须在整个列表上工作,并且 tie 不会对你有任何好处。并且对象可能能够提供更有效的搜索和转换方法。

关于perl - 访问时触发数组元素计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14289624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com