选项中的值通常是基于零的索引还是基于一个索引?

时间:2012-08-31 14:24:57

标签: perl api indexing

使用'bold'选项,我可以选择一个应该以粗体显示的元素。 我应该对第一个元素(一个)使用'0'或'1'吗?

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

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

4 个答案:

答案 0 :(得分:6)

规范的答案是:

xkcd 163

答案 1 :(得分:5)

Perl中的索引从0开始,所以我建议你也这样实现。

答案 2 :(得分:1)

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

答案 3 :(得分: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} ) { ... }

通过这种方式,您可以保留任何阅读代码的人的理智(sane =假设您将数组编入索引为好人),但是您的选项检查会成功。