1

使用“粗体”选项,我可以选择一个应该打印为粗体的元素。我应该对第一个元素(一个)使用“0”还是“1”?

my_print( [ 'one', 'two', 'three' ], { bold => 1 } );

或者

my_print( [ 'one', 'two', 'three' ], { bold => 0 } );
4

4 回答 4

7

规范的答案是这样的:

xkcd 163

于 2012-08-31T15:58:40.523 回答
5

Perl 中的索引从一开始,0所以我建议您也以这种方式实现它。

于 2012-08-31T14:28:17.300 回答
1

在 Perl 中,数组通常(但不一定)从零开始,所以第二个例子应该是正确的。但这当然取决于实施。

于 2012-08-31T14:28:38.517 回答
1

好吧,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} ) { ... }

这样一来,您就可以保持阅读您的代码的任何人的理智(理智 = 假设您将数组索引为好人),但会在您的选项检查中取得成功。

于 2012-08-31T14:38:56.883 回答