【问题标题】:Why does Nullable!(Nullable!int) refuse to compile?为什么 Nullable!(Nullable!int) 拒绝编译?
【发布时间】:2015-12-02 15:05:05
【问题描述】:

以下代码拒绝编译:

Nullable!(Nullable!int) nni = Nullable!(Nullable!int)(10);

带有此错误消息:

Error: inout method nullable.Nullable!(Nullable!(immutable(int))).Nullable.this is not callable using a mutable object

为什么?

【问题讨论】:

  • 为什么要一个可空的可空?你想达到这个目的吗? “它可以为空,也可以具有可以为空或具有值的值”超越我为什么要这样做。如果你能给我解释一个好的情况,也许我可以看到我将来可能需要它的情况,但我从来没有遇到过,所以请原谅我。

标签: d phobos


【解决方案1】:

这似乎是一条糟糕的错误消息。

Nullable!(T) 的构造函数的参数是T。在本例中,TNullable!int,但您传入的是 int。您需要将int 包装在一个可空值中。

Nullable!(Nullable!int) foo = Nullable!(Nullable!int)(Nullable!int(10));

【讨论】:

  • 天哪,这看起来很糟糕,不是吗? :) 一行五次Nullable...
  • @DejanLekic 您可以在变量声明中使用auto 将其减少到三个。无论如何,在Nullable 上加倍并没有什么意义。
  • 别名 Nullable!int InnerNullable;并将其与 auto foo = Nullable!InnerNullable(InnerNullable(10));有所改善
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多