Есть ли в Юлии операция вычитания типов? - PullRequest
0 голосов
/ 31 августа 2018

У Юлии typeintersect(Missing, Union{Missing, Float64}) (возвращается Missing). Возможно ли получить то, что осталось (т. Е. Union{Missing, Float64} - Missing, возвращающее Float64)?

Я пробовал с typesubtract(Missing, Union{Missing, Float64}) или typecomplement(Union{Missing, Float64}, Missing), но, очевидно, их не существует; -)

1 Ответ

0 голосов
/ 31 августа 2018

Для 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), и у вас есть шаблон, как подобное можно реализовать для других сценариев. Пожалуйста, дайте мне знать, если он отвечает, что вы хотели.

...