How is a variable declared as a simple Float64, say, without initializing it?
Something like A= Array{Float64, 0}(undef)
, which works for vectors.
You don´t . A Float64
is an immutable value, meaning that there is nothing that is its “existence” except its value. What you can is define its scope without giving it a value:
function f()
local a
for i in 1:3
if i == 1
a = 1
end
a = a + 1
end
return a
end
(the function above errors if you remove local a
because then a is not initialized in the second iteration of the loop, as the scope of a
would be limited to the first iteration).
ps: You could there also use local a::Float64
to specify the type of a
).
1 Like
To nitpick I think isbits
is a better abstraction than isimmutable
here. Regardless a Float64
is represented by exactly eight bytes, and all those 2^64 possible values correspond to a double precision number, so there’s no space to encode the state of not being initialized.
1 Like