化简d代码方法
为了更好理解d最好化简代码,去掉各种名词概念.编译器在这方面是一致的:
struct Vector {
float[] _elements;
ref float opIndex(size_t i) scope return {
return this._elements[i];
}
}//待化简,化简成下面.
ref int test(ref scope return int* p)
{
return *p;
}
其中,*替代了[],整替代浮,不需要i了.
不要同重载操作符搞混了,用引用参数替换本,使其为非成员函数,然后去掉这个构包装器.
当前用-dip1000编译无误.
检查丹的表,里面有个[引用 中 型]和[域 值],所以中应用至指针类型.所以,这是预期的,不是漏洞.
是的,很难推导,但理念是可仅用如下项来重写:
int i;
int* p;
return i;
return *p;
return &i;
return &p;
用这些来写例子,再加点引用/中/域.
而构/类/本/[]/闭包等,还得再做些工作才能化简.
浙公网安备 33010602011771号