正确重载 opIndexAssign
Correctly Overloading opIndexAssign
来自 D Language Reference,opIndexAssign 有一个签名:
type opIndexAssign(type value, size_t index0, ...);
return 值的意义是什么,因为它声明如下语句:
Class[1, 3] = 5;
相当于:
Class.opIndexAssign(5, 1, 3);
我没有看到在这种语句中使用 return 值,但是为什么 D 语言引用使用上面的重载 return 什么东西?
编译器似乎接受 void 和非 void return 类型,但什么是 'correct' 类型。
像 int a = Class[1] = 2;
这样的说法是有效的,链接相等运算符,这有时是用数组完成的,所以重载也允许它。
如果您 return 一个值,它允许。如果你 return void,那种代码将无法编译。这并不是严格意义上的错误,但约定是分配给 return 分配的值以允许此类链接。
来自 D Language Reference,opIndexAssign 有一个签名:
type opIndexAssign(type value, size_t index0, ...);
return 值的意义是什么,因为它声明如下语句:
Class[1, 3] = 5;
相当于:
Class.opIndexAssign(5, 1, 3);
我没有看到在这种语句中使用 return 值,但是为什么 D 语言引用使用上面的重载 return 什么东西?
编译器似乎接受 void 和非 void return 类型,但什么是 'correct' 类型。
像 int a = Class[1] = 2;
这样的说法是有效的,链接相等运算符,这有时是用数组完成的,所以重载也允许它。
如果您 return 一个值,它允许。如果你 return void,那种代码将无法编译。这并不是严格意义上的错误,但约定是分配给 return 分配的值以允许此类链接。