未定义undef、空值nothing、缺失值missing、空数组,这几个有什么区别和适用范围吗?
如果初始化一个变量,令其为空,那么用上述哪种合适些?
如果中途空值化一个非空值变量,那么用上述哪种合适些?
有什么区别和适用范围吗
本来准备食用完有机物补充,现在看楼下那个回复吧
如果初始化一个变量,令其为空
nothing
如果中途空值化一个非空值变量
nothing
1 个赞
undef
用于矩阵的初始化Array{Float64, 2}(undef, 4, 4)
直接使用分配的内存里原先的(垃圾)数据,不进行初始化nothing
一般用于两种情况:1) 表明该函数没有返回值,2) 某个参数不设定默认值missing
一般与概率统计有关,表明这个值是缺失的 (比如说一条统计记录里面某些值是缺失的)- 空矩阵
[]
在 Julia 下一般不用作空值这个概念 – 矩阵创建本身是有开销的
nothing
和 missing
具体的处理需要看工具箱内部的实现。
- 某个参数使用默认值
function f(A; r=nothing)
r = isnothing(r) ? size(r) .÷ 2 : r
...
end
基本类似于 f(A; r=size(r).÷ 2) = ...
但在一些场景下确实是有用的,比如说需要处理更复杂的可选值的逻辑,甚至在某些情况下抛出一些 @warn
或 error
的话,那么放在函数签名里去做就显得太冗长和复杂了。
1 个赞
可以先直接 local x
, 不赋值。
在 Ref
初始化的时候也比较常见
1 个赞