21

私は本当にC#が好きになりました?? オペレーター。そして、ある言語で何か便利なものがある場合、それはおそらく Perl にもあるという事実に、私はかなり慣れています。

しかし、私は見つけることができません?? Perl で同等です。ありますか?

4

5 に答える 5

40

5.10の時点で、演算子があります。これは、Perlの概念がC#の概念と同等//であると考えると意味的に同等です。undefnull

例A:

my $a = undef;
my $b = $a // 5;  # $b = 5;

例B:

my $a = 0;
my $b = $a // 5;  # $b = 0;
于 2009-12-12T02:04:25.043 に答える
8

Adam が言うように、Perl 5.10 には、//左側の演算子を真偽の代わりに定義されているかどうかをテストする演算子があります。

 use 5.010;

 my $value = $this // $that;

以前のバージョンの Perl を使用している場合は、少し面倒です。||動作しません:

 my $value = $this || $that;

その場合、$thisが 0 または空の文字列であり、どちらも定義されている場合、 が得られます$that。これを回避するには、慣用的に条件演算子を使用して、独自のチェックを行うことができます。

 my $value = defined( $this ) ? $this : $that;
于 2010-09-25T18:57:43.443 に答える
1

実際には、短絡 OR 演算子は undef を評価するときにも機能します。

my $b = undef || 5;  # $b = 5;

ただし、0 を true と評価すると失敗します。

my $b = 0 || 5;  # $b = 5;
于 2009-12-14T08:23:31.137 に答える
0

質問は任意の数の引数を暗示していたので、答えはサブルーチンを暗示しています:

ここで取得します-リストの最初に定義された/空でない文字列値を返します:

sub coalesce { (grep {length} @_)[0] }
于 2013-01-25T15:25:11.817 に答える
-4

私が知っていることではありません。

Perl は実際には null の概念をあまり使用していません。変数が未定義かどうかのテストがあります。?? のような特別な演算子はありません。ただし、条件付き ?: 演算子を undef テストで使用して、かなり近づけることができます。

また、perlオペレーター リストにも何も表示されません。

于 2009-12-12T01:50:18.957 に答える