Dlang DMD 2.103 版本 Array 反转:std.algorithm.reverse() 解析
Dlang DMD 2.103 版本 Array 反转:std.algorithm.reverse() 解析
在 Dlang 代码中,使用 reverse 函数反转数组时,需要引入 std.algorithm 库。例如,以下代码如果去掉第 2 行 import std.algorithm,会报错提示:Error: no property 'reverse' for 'two' of type 'int[]'
import std.stdio;
import std.algorithm;
void main()
{
int[3] one = [1, 2, 3];
auto two = one[$-2..$];
//reverse(two);
two.reverse();
writeln(one, two);
}
原因是:Array 类型没有 reverse 方法(即 int[] 类型没有 reverse 方法),需要通过 std.algorithm.reverse() 函数来实现反转数组。
在第 2 行添加 import std.algorithm 后,可以直接调用两种方式来实现数组反转:
- 使用
std.algorithm.reverse()函数,如下所示:
reverse(two);
- 使用 Array 类型的
opApply方法,如下所示:
two.reverse();
两者的区别在于:
std.algorithm.reverse()函数是对传入的数组进行反转操作,并返回反转后的数组;- Array 类型的
opApply方法是在原数组上进行反转操作,并没有返回任何值。
因此,two.reverse() 实际调用的是 std.algorithm.reverse(two),因为 reverse() 函数是 std.algorithm 库中定义的函数,而 two.reverse() 是对 two 数组调用 opApply 方法,而 opApply 方法内部实现了调用 std.algorithm.reverse(two) 的操作。
总结:
在 Dlang 代码中,反转数组需要使用 std.algorithm.reverse() 函数,可以通过直接调用函数或使用 opApply 方法来实现。两种方式的区别在于函数返回值和操作对象。
更多信息请参考:
原文地址: https://www.cveoy.top/t/topic/n2fA 著作权归作者所有。请勿转载和采集!