我使用array
中的std.array
将MapResult
转换为特定的数组类型时遇到了一些麻烦。我的问题如下:
我有一个对象数组a
,每个对象都有一个可公开访问的字段val
。我想使用map
中的std.algorithm
来查看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
s不是范围,是否有办法获得我想要的东西?
答案 0 :(得分:5)
实际上这意味着编译器认为(ulong[])(MapResult!(_funcliteral3,Box[]))
是模板参数而不是ulong[]
正确嵌套括号,应该修复
return array!(ulong[])(map!(function ulong(Box x) {return x.val;})(a));