对于那些不知道Perl的
autobox
的人来说,它是一个模块,它提供了内置原语的方法,甚至可以覆盖它们.
# primitives 'a string'->toupper(); 10->to(1); # returns [10,9,8,7,6,5,4,3,2,1] # Arrays,array refs [qw(A B C D E)]->for_each( sub { ... } ); @array->length() # Hashes,hash refs { key => 'value',key2 => 'value2' }->values() %hash->keys() # Even specify your own base class... use autoBox SCALAR => 'Foo';
它总体上使内置类型的方法更像是对象,简化了一些任务,并使其他人看起来更加明显.
然而…
autobox
文档说有performance penalties,有些只是简单地调用对象上的方法,远远超过了标准语法. And then,there’s a few caveats about its use in eval
s (specifically,string evals) that might,in some circumstances,cause issues.它也似乎不符合许多Perl发行版的标准.
使用autoBox真的值得吗?