I wish to speed up my datastructure by converting array type to Static Array but I encounter an error. What did I do wrong?
using StaticArrays
datetype = Array{Int64,1}
datestatictype = SVector{3,Int64}
function printdate(x::datetype)
println("year ",x[1]," month ",x[2]," day ",x[3])
end
function printdatestatic(x::datestatictype)
println("year ",x[1]," month ",x[2]," day ",x[3])
end
a = Int64[2019,5,6]
printdate(a)
b = SVector{3,Int64}[2019,5,6]
printdatestatic(b)
with output
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.1.0 (2019-01-21)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
year 2019 month 5 day 6
ERROR: LoadError: MethodError: Cannot `convert` an object of type Int64 to an object of type SArray{Tuple{3},Int64,1,3}
Closest candidates are:
convert(::Type{SA<:StaticArray}, ::SA<:StaticArray) where SA<:StaticArray at /Users/ssiew/.julia/packages/StaticArrays/VyRz3/src/convert.jl:11
convert(::Type{SA<:StaticArray}, ::StaticArray) where SA<:StaticArray at /Users/ssiew/.julia/packages/StaticArrays/VyRz3/src/convert.jl:10
convert(::Type{SA<:StaticArray}, ::AbstractArray) where SA<:StaticArray at /Users/ssiew/.julia/packages/StaticArrays/VyRz3/src/convert.jl:22
...
Stacktrace:
[1] setindex!(::Array{SArray{Tuple{3},Int64,1,3},1}, ::Int64, ::Int64) at ./array.jl:767
[2] getindex(::Type{SArray{Tuple{3},Int64,1,3}}, ::Int64, ::Int64, ::Int64) at ./array.jl:353
[3] top-level scope at none:0
in expression starting at /Users/ssiew/juliascript/StaticArrayTest.jl:17