【发布时间】:2015-08-29 23:54:26
【问题描述】:
假设我有一个复合类型的数组,如下所示:
type myType
a::Int
b::Float
end
myArray=myType[]
出于显而易见的原因,我希望能够使用简单的索引来访问复合类型的字段,如下所示:
aVals=myArray[1:3].a
下面的宏可以成功完成这种类型的索引,只要我有一个数组的数字可迭代:
macro getArray(exp)
iter=eval(exp.args[1].args[2])
exp.args[1].args[2]=:i;
:[$(esc(exp)) for $(esc(:i)) in $iter]
end
我如何编写一个类似的宏,它也能够使用 end 关键字处理数组索引,即:
aVals=@getArray myArray[1:end].a
【问题讨论】:
标签: metaprogramming julia