化简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;

用这些来写例子,再加点引用/中/域.
构/类/本/[]/闭包等,还得再做些工作才能化简.

posted @ 2021-07-05 21:23  zjh6  阅读(40)  评论(0)    收藏  举报  来源