22

C# で ??= 演算子が使用できるようになれば、非常に便利です。私は次のことを頻繁に書いていることに気づきました。

something = something ?? new Something();

私はむしろ次のように書きたいと思います:

something ??= new Something();

考え?新しい言語拡張は、その性質上、常に物議を醸しています。

4

7 に答える 7

2

私は必ずしも演算子に反対しているわけではありませんが、そのような変数の再利用は、私にとって「正しい方法」とは思えません。明らかな NULL ポインターであるはずのバグに、予期しないデータが取り込まれ、予期しない方法で動作するなど....

于 2009-03-17T20:03:34.470 に答える
2

私は実際にそれをPHP7に実装しました。現在、RFC の提案段階にあります。 https://github.com/php/php-src/pull/1795

実はPHP7のnull合体演算子についての質問でした。これをチェックして:

$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? ‘value’;
I want to check if some var is null and if the same var is null set the same var to ‘value’.

したがって、等号演算子の後に同じ変数を繰り返していますが、これは正しくありません。

そのため、+= に似た「??=」のような別の演算子が必要だと感じています。

$this->request->data['comments']['user_id'] ??= '値'. したがって、var が null の場合は「値」に設定され、それ以外は同じままです。

そのプルリクエストで、これを実装しようとしました。

$ sapi/cli/php -r '$num = null;$num ??= 5; echo $num;'
5
于 2016-03-09T00:35:31.373 に答える
1

??オペレーターと、より適切には、上記のパターンはあまり一般的ではないため、新しいオペレーターはやり過ぎだと言えます。

于 2009-03-17T20:01:17.813 に答える