【发布时间】:2021-07-27 08:09:34
【问题描述】:
我有一个模块,比如说,叫做常量,
module Constants
const zero = 0.0 :: Float64
const czero = 0.0 + 0.0im :: Complex
end
我知道我可以将零定义为 Float64。但是如何定义“Complex”和“Float64”变量,例如 czero?目前我使用复杂,但我想更具体。如果我使用 ComplexF64
const czero = 0.0 + 0.0im :: ComplexF64
它给了我一个错误,
ERROR: LoadError: TypeError: in typeassert, expected Complex{Float64}, got a value of type Complex{Bool}
那么我应该使用哪种具体类型的 Complex? 我给每个变量一个具体的类型是因为我听说如果代码看起来像 Fortran,它可以像 Fortran 一样运行,因为我先定义了类型,所以 Julia 不必转换可能很慢的类型。
【问题讨论】:
-
TypeError 是因为它被解析为
0.0 + 0.0(im :: ComplexF64),你断言im是ComplexF64类型,但想要(0.0 + 0.0im)::ComplexF64。如下所述,您可能不想这样做。 -
请注意,按照惯例,在 Julia 中,您不会在
::之前和之后放置空格。这只是一个风格问题 -
我又删除了
fortran
标签: julia