34 lines
961 B
D
34 lines
961 B
D
|
import std.stdio;
|
|||
|
|
|||
|
int[3] fun(int[3] x, int[3] y)
|
|||
|
{
|
|||
|
// x и y – копии переданных аргументов
|
|||
|
x[0] = y[0] = 100;
|
|||
|
return x;
|
|||
|
}
|
|||
|
|
|||
|
double[3] fun2(double[] x)
|
|||
|
{
|
|||
|
double[3] result;
|
|||
|
result[] = 2 * x[]; // Операция над массивом в целом
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
void main()
|
|||
|
{
|
|||
|
int[3] a = [1, 2, 3];
|
|||
|
int[3] b = a;
|
|||
|
a[1] = 42;
|
|||
|
assert(b[1] == 2); // b – независимая копия a
|
|||
|
|
|||
|
auto c = fun(a, b); // c имеет тип int[3]
|
|||
|
|
|||
|
assert(c == [100, 42, 3]);
|
|||
|
writeln(c);
|
|||
|
assert(b == [1, 2, 3]); // Вызов fun никак на отразился на b
|
|||
|
writeln(b);
|
|||
|
|
|||
|
double[3] point = [0, 0, 0];
|
|||
|
double[] test = point; // Все в порядке
|
|||
|
auto r = fun2(point); // Все в порядке, теперь r имеет тип double[3]
|
|||
|
}
|