templates - 使用数组将MapResult转换为数组

标签 templates d

我在使用 std.array 中的 arrayMapResult 转换为特定数组类型时遇到了一些麻烦。我的问题如下:

我有一个对象数组a,每个对象都有一个可公开访问的字段val。我想使用 std.algorithm 中的 map 来遍历 a 并返回 val< 的所有值的数组 成员。我的代码看起来像这样:

import std.algorithm:map;
import std.array:array;
//import for my object type, which I call Box here

ulong[] fun (Box[] a) {
return array!(ulong[])(map!(function ulong(Box x) {return x.val;})(a);
}

但是,当我尝试执行此操作时,编译器会给出一个错误,指出 array 无法从参数类型 !(ulong[])(MapResult!(_funcliteral3 ,Box[]))。这是否意味着 MapResult 不是范围,有没有办法获得我想要的结果?

最佳答案

实际上这意味着编译器认为 (ulong[])(MapResult!(_funcliteral3,Box[])) 是模板参数,而不是 ulong[]

正确嵌套括号,它应该被修复

return array!(ulong[])(map!(function ulong(Box x) {return x.val;})(a));

关于templates - 使用数组将MapResult转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599045/

相关文章:

C++是在每个实例化时创建的模板类中每个方法的新版本

c++ - 将 Array 类转换为模板

c++ - 是否可以使用 C++ 模板函数来接受任何类型 T 的集合?

multidimensional-array - 有没有更好的方法来迭代多维数组?

compilation - rdmd 命令无法识别

c++ - 如何在 CRTP 基类中根据 "op"实现 "op="?

c++ - 从可变参数模板创建实例

d - 这个纯函数如何能够修改非私有(private)状态?

linux - 如何使用 Glade/GtkD 和 D 编程语言显示 Hello World

compiler-errors - D 编程不完全编译器