我在下面的代码背后有点好奇的机制:
int[3] a1 = [ 1 , 2 , 3 ];
int[3] a2 = [ 1 , 2 , 3 ];
int[3] result = a1[] + a2[];
foreach (i; result)
writeln(i);
Run Code Online (Sandbox Code Playgroud)
结果是2,4,6.在C++中,我们不得不重载'+'运算符,以便使用两个向量来实现它或使用std :: transform.我查了一下array(std_array.html)的实现文档.我无法找到'+'的任何重载,我认为D通过检查数据整数类型或其他东西来管理这个,但我只是在猜测.
有人可以解释这实际上是如何工作的吗?
它是语言本身的一部分:
http://dlang.org/arrays.html#array-operations
只要给出结果,实现可以做不同的事情,这为自动优化提供了足够的灵活性.目前,在查看反汇编时,它会编译为函数调用,类似于操作符重载,只是自动完成.