C# で ??= 演算子が使用できるようになれば、非常に便利です。私は次のことを頻繁に書いていることに気づきました。
something = something ?? new Something();
私はむしろ次のように書きたいと思います:
something ??= new Something();
考え?新しい言語拡張は、その性質上、常に物議を醸しています。
C# で ??= 演算子が使用できるようになれば、非常に便利です。私は次のことを頻繁に書いていることに気づきました。
something = something ?? new Something();
私はむしろ次のように書きたいと思います:
something ??= new Something();
考え?新しい言語拡張は、その性質上、常に物議を醸しています。
私は必ずしも演算子に反対しているわけではありませんが、そのような変数の再利用は、私にとって「正しい方法」とは思えません。明らかな NULL ポインターであるはずのバグに、予期しないデータが取り込まれ、予期しない方法で動作するなど....
私は実際にそれを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
??
オペレーターと、より適切には、上記のパターンはあまり一般的ではないため、新しいオペレーターはやり過ぎだと言えます。