从有选项的值通常是一个从零开始的索引或一个基于索引?(Have values from option

2019-09-28 20:59发布

随着“大胆”选项,我可以选择哪些应印大胆的元素。 我应该使用“0”或“1”的第一个元素(一个)?

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

要么

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

Answer 1:

在Perl指数开始于0 ,所以我建议你实现它的方式了。



Answer 2:

该规范的答案是这样的:



Answer 3:

在Perl阵列通常(但不neccessarily)从零开始的,所以第二个例子应该是正确的。 但是,当然,这依赖于inplementation。



Answer 4:

那么,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} ) { ... }

有了这个,你保留人谁将会阅读你的代码的健全性(理智=假设你索引数组作为一个好人),但会成功在您的选择进行检查。



文章来源: Have values from options usually a zero based index or a one based index?