perl - 如何延迟加载 Perl 变量?

标签 perl lazy-evaluation

我有一个需要传递给子程序的变量。子程序很可能不需要这个变量,并且为变量提供值是很昂贵的。是否可以创建一个“延迟加载”对象,该对象仅在实际使用时才进行评估?我无法更改子例程本身,因此对于调用者来说,它必须仍然看起来像一个普通的 Perl 标量。

最佳答案

您需要查看 Data::LazyScalar::Defer 更新: 还有 Data::ThunkScalar::Lazy

我自己还没有尝试过任何这些,但我不确定它们是否适合某个对象。为此,您可以尝试使用 Moose 类将真实对象保存在 lazy 属性中, handles 对象提供的所有方法。 (不过,如果子例程执行 isa 检查,这将不起作用,除非它调用 isa 作为方法,在这种情况下,您可以在类中覆盖它。)

关于perl - 如何延迟加载 Perl 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792873/

相关文章:

perl - 生成包含条件项的列表

ios - 如果属性不是惰性变量(并且编译器没有告诉我这一点),为什么 #selector 函数不起作用?

F#:低效的序列处理

c# - 是否可以缓存 IEnumerable 惰性评估结果?

perl - Perl 可以在动态结构中管理子程序吗?

mysql - 如何使用 DBD::mysql 和 Perl 检查数据库行是否存在?

dictionary - 我的程序的map/zipmap部分会消耗太多内存吗?

Haskell 和惰性 Monads 评估

perl - 避免在 Perl 中退出时只读 forked() RAM 分配

Perl Mechanize 绕过证书验证但遇到身份验证/登录