在朱莉娅,我们有typeintersect(Missing, Union{Missing, Float64})
(返回Missing
)。是否有可能获得剩下的东西(即Union{Missing, Float64} - Missing
返回Float64
)?
我确实尝试过typesubtract(Missing, Union{Missing, Float64})
或typecomplement(Union{Missing, Float64}, Missing)
,但显然它们不存在;-)
对于Missing
,它实际上是在Base(但不是导出)中实现为nonmissingtype
函数。在这里您有相关的代码:
nonmissingtype(::Type{Union{T, Missing}}) where {T} = T
nonmissingtype(::Type{Missing}) = Union{}
nonmissingtype(::Type{T}) where {T} = T
nonmissingtype(::Type{Any}) = Any
所以这应该可以用Missing
来解决你的问题(只需import
这个Base
这个函数)你就有了一个模板,如何为其他场景实现类似的东西。如果它能回答你的想法,请告诉我。