Perl 这里的[]是什么意思?

Perl 这里的[]是什么意思?,perl,Perl,以前从未见过这样的代码 这里的[]是什么意思?[]意味着$self是对列表/数组的引用(假设代码有效)。不过,这看起来有点奇怪,因为列表索引应该是数字的。在这种情况下,对象$self被实现为受祝福的数组引用,而不是使用受祝福的哈希引用的更常见的方法。语法$foo->[42]从数组引用访问单个元素。大概,UTF8是一个常数,它将数值索引返回到数组中 有时,当人们确信(通常是错误的)对对象属性的哈希查找会导致巨大的开销,并试图过早地优化代码时,就会看到这种习惯用法。UTF8可能是一个常量。我们在pe

以前从未见过这样的代码


这里的
[]
是什么意思?

[]
意味着
$self
是对列表/数组的引用(假设代码有效)。不过,这看起来有点奇怪,因为列表索引应该是数字的。

在这种情况下,对象
$self
被实现为受祝福的数组引用,而不是使用受祝福的哈希引用的更常见的方法。语法
$foo->[42]
从数组引用访问单个元素。大概,
UTF8
是一个常数,它将数值索引返回到数组中


有时,当人们确信(通常是错误的)对对象属性的哈希查找会导致巨大的开销,并试图过早地优化代码时,就会看到这种习惯用法。

UTF8可能是一个常量。我们在perl中实现记录/类时会做这种事情。使用arrayref作为对象,并使用常量作为索引。“比使用散列更安全、更有效。@索德维德:我觉得
UTF8
可能是一个常量。不过,它看起来几乎像一只虫子。部分原因是我不认为我会将数组引用用作那样的对象。基于数组的对象至少有两个好处:索引中没有键入错误,因为索引使用常量。没有多重继承,强制使用角色。这可能是幸运的,因为它的名称是
$self
,但它可能只是一个普通的诅咒数组引用。friedo,你确定这是错误的吗。我已经做了基准测试——当然,如果有方法分派的话,节省下来的钱会被抹掉。Axeman,这就是我的观点。数组查找将比哈希查找快,但这不是代码中的瓶颈所在。因此,为了清晰起见进行优化并使用标准的习惯用法通常比聪明的技巧要好,因为聪明的技巧实际上并不会提高程序的速度。
$self->[UTF8] = $conf->{utf8};