【发布时间】:2018-10-21 13:44:00
【问题描述】:
我想在 Julia 中定义一个任意阶的类张量类型。在这里,类似张量的意思是Vector{Vector{Vector{T}}。我的试验是下面的代码:
function Tensor(N::Int, T::DataType)
N==0 && return eval(T)
return Tensor(N-1, eval(Expr(:curly, :Vector, T)))
end
声明将是data = Tensor(3, Float64)[]。对此,我有两个问题。 1)有没有更简洁的方法来做到这一点? 2) 我更喜欢使用像data = Tensor{3, Float64}[] 这样的大括号来声明,而不是使用括号。我怎样才能通过元编程来做到这一点?
【问题讨论】:
-
在您的用例中,您不想只说 data = Array{Float64, 3} 吗?
-
哦,这正是我想要的......(我是新手)
-
你不应该使用
eval,尤其是这样的事情。
标签: julia metaprogramming