gpt4 book ai didi

perl - 如何监控属性的变化? (与更改/更改/属性相反)

转载 作者:行者123 更新时间:2023-12-02 00:59:17 25 4
gpt4 key购买 nike

我经常使用保存对象集合的 Perl/Moose 属性。我知道可以监视是否设置了整个属性。在那种情况下 trigger可以使用。这也使得监视属性中的对象成为可能。但是如何监控集合呢?如果属性是(例如)对象数组,是否可以监视是否添加了对象?

我要找的是一种 method modifier例如“before”或“around”,用于在属性上调用内置函数(如 push 或 shift)时。这将允许非常通用的解决方案,例如仅在有更改时才保存。

最佳答案

push 之类的操作不是针对属性本身执行的,而是针对该属性引用的数组对象执行的。

因此,观察此类操作的唯一可靠方法是从该数组对象内部 – by tie - 把它放到合适的类(class)。但这是相当黑暗的 Perl 魔法,通常是不可取的(缓慢,难以正确执行,可能会暴露其他模块中的错误,并且级别非常低)。

通常更好的方法是选择一种停止公开数组引用的设计。例如。代替 push @{ $foo->attribute }, 42 你可以提供一个方法 $foo->push_attribute(42)。在该方法中,您可以实现所需的任何 Hook 。

关于perl - 如何监控属性的变化? (与更改/更改/属性相反),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51827583/

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