空凝聚赋值运算符? [关闭]
-
19-08-2019 - |
题
这将是非常好的,如果C#允许的α-β=运算符。我发现自己写的频繁以下内容:
something = something ?? new Something();
我宁愿写这样的:
something ??= new Something();
思考?新的语言扩展总是争议其性质。
解决方案
我诚实地撕裂的= ++运算符摆在首位,它的使用是相当普遍和常见。从一个清晰一点,你可能需要输入额外的几个字符是不值得的变化对语言添加?? =。如果这是一个投票,我会投反对票这种变化的语言(好问题,坏主意: - )
我还没有尝试过这一点,但你能映射?? =在Visual Studio中的宏,只是做了重写的吗?
其他提示
像Ruby其他编程语言使用相当频繁:
something ||= Something.new
如果“东西”是一个私人领域的属性访问器,你可以做以下....如果现场被发现是空,这将执行分配。
private Something something;
public Something Something
{
get
{
return something ?? (something = new Something());
}
}
我不一定对运营商,但是,那样的可变重用的只是不觉得自己是“正确的方式”给我。这应该是很明显的空指针错误最终填充意外的数据,并且在一些意想不到的方式工作,等等...
我实际实施,对于PHP7。它现在在RFC建议阶段。 https://github.com/php/php-src/pull/1795
实际上,这是一个关于在PHP7空合并运算符问题。检查:
$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’.
因此我的操作者等于后重复相同的变量,这并不感觉的权利。
因此,我觉得我们需要另一运营商等“?? =”类似+ =;
$这 - >请求 - >数据[ '注释'] ['USER_ID”]'=‘值’。因此,如果VAR为空将它设置为“价值”和其他人保持不变。
在该拉入请求我试图实现这一点。
$ sapi/cli/php -r '$num = null;$num ??= 5; echo $num;'
5
作为??
是简写以类似于方式使用三元运算符:
(myObject != null) ? myObject : somethingElse;
而不是速记算术运算,我不认为一个??=
操作是一个不错的选择。它是一个条件运算。
我要说的是,操作者??
更针对性上面的图案是不那么常见,因此新的操作员是矫枉过正。
不隶属于 StackOverflow