1

「太字」オプションを使用すると、太字で印刷する要素を選択できます。最初の要素 (one) には '0' または '1' を使用する必要がありますか?

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

また

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

4 に答える 4

7

標準的な答えは次のとおりです。

163

于 2012-08-31T15:58:40.523 に答える
5

Perlのインデックスはから始まる0ので、そのように実装することをお勧めします。

于 2012-08-31T14:28:17.300 に答える
1

Perlでは、配列は通常(必ずしもそうとは限りませんが)ゼロベースであるため、2番目の例は正しいはずです。しかしもちろん、これは補充に依存します。

于 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} ] );
  }
}

...配列の最初の要素を太字にする場合、明らかに太字にはなりません。

それでも、1 つの変更を加えると、それが進むべき道だと思います。条件を次のように変更します。

 if ( exists $options_href->{bold} ) { ... }

これにより、コードを読む人の正気を保ちながら (正気 = いい人として配列にインデックスを付けると仮定して)、オプション チェックに成功します。

于 2012-08-31T14:38:56.883 に答える