【发布时间】:2011-08-11 06:28:40
【问题描述】:
$self->[UTF8] = $conf->{utf8};
以前从未见过这样的代码。
[] 在这里是什么意思?
【问题讨论】:
标签: perl
$self->[UTF8] = $conf->{utf8};
以前从未见过这样的代码。
[] 在这里是什么意思?
【问题讨论】:
标签: perl
在这种情况下,对象$self 被实现为祝福数组引用,而不是使用祝福哈希引用的更常见的方法。语法$foo->[42] 访问数组引用中的单个元素。据推测,UTF8 是一个常量,它返回数组的数字索引。
当人们确信(通常是错误地)对象属性上的哈希查找会导致大量开销并试图过早地优化他们的代码时,您有时会看到这种习惯用法。
【讨论】:
$self,但它可能只是一个普通的被诅咒的数组引用。
[] 暗示 $self 是对列表/数组的引用(假设代码有效)。不过,这看起来有点奇怪,因为列表索引应该是数字的。
【讨论】:
UTF8 可能是一个常数。我们做这种事情是为了在 perl 中实现记录/类。使用 arrayref 作为您的对象和索引的常量。比使用哈希更安全、更高效。
UTF8 可能是一个常数。不过,它几乎看起来像一个错误。部分原因是我认为我不会使用数组引用作为这样的对象。