几天前,我决定尝试朱莉娅,并试图将我的一个巨蟒项目翻译给朱莉娅。我知道,使用类型系统对于良好的性能至关重要。但是,我在python中有类似的内容:
class Phonon(object):
# it has an attribute called D which looks like
# D = {'on_site': [D00, D11, D22, D33 ...], 'lead':{'l': [Dl00, Dl01, Dl11], 'r': [Dr00, Dr01, Dr11]},'couple': [D01, D12, D23 ...], 'lead_center':{'l': Dlcl, 'r': Dlcr}}
# all D00, D11, D22 matrices are numpy arrays
如果我把这个翻译成朱莉娅,那就是:
type Phonon:
D::Dict{ASCIIString, Any}
end
编译器似乎无法获得多少关于phonon
s的信息。所以我的问题是:朱莉娅的人是如何组织他们复杂的数据的?
发布于 2015-11-05 04:12:09
如果我能正确理解你,你可能会想要这样的东西:
type PhononDict{T<:Number}
on_site::Vector{Matrix{T}}
lead::Dict{ASCIIString, Vector{Matrix{T}}}
couple::Vector{Matrix{T}}
lead_center::Dict{ASCIIString, Matrix{T}}
end
我假设numpy数组的元素类型<:Number,您可以将其调整为类似于T<:Union{Int64, Float64}
的元素类型。
这里的关键问题是lead::Dict
,所以D::Dict{ASCIIString, Any}
julia> typejoin(Array, Dict)
Any
我建议将D
转换为复合类型,然后将更多信息传递给编译器。有关参数类型的更多信息。
https://stackoverflow.com/questions/33536276
复制相似问题