Arrays D中的向量表示法

Arrays D中的向量表示法,arrays,d,Arrays,D,我正在玩D阵列,我偶然发现: 当我编译这段代码时 import std.stdio; int main() { int[] a, b; b ~= [2,3,4,5]; a.length = b.length; a[] = b[] + 4; writeln(typeid(a),"\n",typeid(b)); writeln(a,"\n",b); int[] c, d; for (int n=10; n<20; ++n) { d ~= n;

我正在玩D阵列,我偶然发现:

当我编译这段代码时

import std.stdio;

int main()
{
  int[] a, b;
  b ~= [2,3,4,5];
  a.length = b.length;
  a[] = b[] + 4;
  writeln(typeid(a),"\n",typeid(b));
  writeln(a,"\n",b);

  int[] c, d;  
  for (int n=10; n<20; ++n) {
    d ~= n;

  }
  c.length = d.length;
  c = d[] + 2;  //compile error
  writeln(typeid(c),"\n",typeid(d));
  writeln(c,"\n",d);

  return 0;
}
前几行和其他行之间的唯一区别是b和d的填充方式

如何在循环中填充数组时使用数组操作?

还有一个问题:


前几行是正确的方法吗?行
a.length=b.length对我来说似乎有点奇怪。

第一个问题:你刚才忘了左边的
[]
<代码>c[]=d[]+2工作


第二个问题:是的;向量操作需要大小相等的数组,设置
.length
是调整数组大小的一种方法。

第一个问题:您刚刚忘记了左侧的
[]
<代码>c[]=d[]+2工作

第二个问题:是的;向量操作需要大小相等的数组,设置
.length
是调整数组大小的一种方法

前几行与其他行之间的唯一区别是b和d的填充方式

不,不是。仔细看看

a[] = b[] + 4;
c = d[] + 2;  //compile error
关于这一点:

int[] a, b;
b ~= [2,3,4,5];
a.length = b.length;
a[] = b[] + 4;
您也可以这样做:

int[] a = new int[4];
int[] b = [2, 3, 4, 5];
a[] = b[] + 4;
前几行与其他行之间的唯一区别是b和d的填充方式

不,不是。仔细看看

a[] = b[] + 4;
c = d[] + 2;  //compile error
关于这一点:

int[] a, b;
b ~= [2,3,4,5];
a.length = b.length;
a[] = b[] + 4;
您也可以这样做:

int[] a = new int[4];
int[] b = [2, 3, 4, 5];
a[] = b[] + 4;