这将是非常好的,如果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;

而不是速记算术运算,我不认为一个??=操作是一个不错的选择。它是一个条件运算。

我要说的是,操作者??更针对性上面的图案是不那么常见,因此新的操作员是矫枉过正。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top