D 为什么是空的!(Nullable!int)拒绝编译?

D 为什么是空的!(Nullable!int)拒绝编译?,d,phobos,D,Phobos,以下代码拒绝编译: 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 为什么?这似乎是一条错误消息 Nullable的构造函数的参数!(T) 是T。在这种情况下,T是一个

以下代码拒绝编译:

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

为什么?

这似乎是一条错误消息

Nullable的构造函数的参数!(T) 
T
。在这种情况下,
T
是一个可为空的
!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));改进了一些你为什么想要一个可空的或可空的?你想做到这一点吗?“它可以是空的,或者有一个可以是空的值,或者有一个值”我不明白你为什么要这么做。如果你能向我解释一个好的情况,也许我能看到一个我将来可能需要它的情况,但我从来没有遇到过,所以请原谅我。