使用“粗体”选项,我可以选择一个应该打印为粗体的元素。我应该对第一个元素(一个)使用“0”还是“1”?
my_print( [ 'one', 'two', 'three' ], { bold => 1 } );
或者
my_print( [ 'one', 'two', 'three' ], { bold => 0 } );
规范的答案是这样的:
Perl 中的索引从一开始,0
所以我建议您也以这种方式实现它。
在 Perl 中,数组通常(但不一定)从零开始,所以第二个例子应该是正确的。但这当然取决于实施。
好吧,Perl 显然不是唯一一种默认情况下其数组从 0 开始索引的语言,因此您的问题可能看起来相当琐碎。
另一方面,也许我得到了它的原因。可能你的子程序是用类似的东西写的......
sub my_print {
my ($elements_aref, $options_href) = @_;
if ( $options_href->{bold} ) {
make_them_bold( $elements_aref->[ $options_href->{bold} ] );
}
}
...如果要加粗数组的第一个元素,这显然不会加粗。
我仍然认为这是要走的路,有一个修改:将条件更改为
if ( exists $options_href->{bold} ) { ... }
这样一来,您就可以保持阅读您的代码的任何人的理智(理智 = 假设您将数组索引为好人),但会在您的选项检查中取得成功。