如果我有一个简单的绑定标量类,该类每次读取时都会递增,所以我可以这样做: 通用标签

但是要创建一个计数器变量,我必须使用tie。我可以创建一个计数器并将其导出。但是,我真正想做的是使其外观为OO。看来我可以像这样创建一个new方法: 通用标签

然后在我的主脚本中通过执行以下操作获得两个计数器: 通用标签

我认为这是行不通的,因为领带不能在副本中幸存下来(我在文档中的某个地方读过),难道没有办法做到这一点吗?

NB。我知道这只是样式问题,但是看起来更正确。

有帮助吗?

解决方案

领带魔术不会传递给赋值,因为它适用于变量本身,而不适用于变量所包含的值。您有几种选择:

返回参考: 通用标签

分配给全局: 通用标签

或者您可以将变量传递给构造函数: 通用标签

您甚至可以创建一个可以同时使用这两种方法的构造函数: 通用标签

在最后两个示例中,tie直接传递给$_[0]。这是因为@_的元素是参数列表的别名,因此它的工作方式就像您在my $counter行中键入了tie一样。


最后,尽管您的示例非常清楚并遵循最佳实践,但本着TIMTOWTDI的精神,您可以像这样编写整个类: 通用标签


最后一件事要提。虽然您的问题是关于绑定变量的,但您也可以使用重载来实现这一点: 通用标签

但是您失去了通过分配来重置计数器的能力。您可以在sub set {$_[0][0] = $_[1]}中添加Counter方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top