1 为什么当我在函数内部定义变量及其类型时,一切正常,但当它是全局变量时却出错? 示例:
n::Int8 = 3
ERROR: LoadError: UndefVarError: n not defined
2 为什么我执行一些简单操作时变量类型会改变?例如:
julia> function main()
n::Int8 = 5
c = collect(1:n)
println(c)
println(typeof(c))
end
main (generic function with 1 method)
julia> main()
[1,2,3,4,5]
Array{Int64,1}
julia> n = zero(Int8)
0
julia> typeof(ans)
Int8
julia> n += 5
5
julia> typeof(ans)
Int64
3 如何保持变量的初始类型?
n += 5
中,即n = n + 5
,5
是 Int64 类型。试试n += Int8(5)
。否则,当将 Int64 加到 Int8 上时,得到 Int64 是合理的(在 Julia 书籍中查找“升级”)。 - Dan Getzcollect(Int8(1):Int8(5))
。 - Dan Getzn::Int8
是否多余?另外,我认为Int
会自动转换为基于Julia运行的硬件所需的类型,这就是为令collect(1:n)
结果为Int64
数组的原因。详情请参见http://docs.julialang.org/en/release-0.4/manual/integers-and-floating-point-numbers/#integers - amrodsone
函数:c = collect(one(n):n)::Vector{Int8}
- HarmonicaMuse