Я хочу сериализовать и десериализовать объекты Julia из внешнего пакета. Некоторые из этих объектов имеют только ограниченные внутренние конструкторы, как в следующем примере:
module ExternalModule
struct SillyType
f::Float64
function SillyType(i::Int)
new(float(i))
end
end
end
Чтобы восстановить объекты / структуры из сохраненных значений (здесь, чтобы восстановить SillyType
, используя float), мне нужно вызвать конструктор по умолчанию, который недоступен:
julia> ExternalModule.SillyType(2.0)
ERROR: MethodError: no method matching Main.ExternalModule.SillyType(::Float64)
Документация Джулии говорит
Если какой-либо метод внутреннего конструктора определен, конструктор по умолчанию отсутствует
метод предоставляется: предполагается, что вы поставили сами
со всеми необходимыми внутренними конструкторами.
Есть ли способ обойти это, чтобы принудительно вызвать отсутствующий конструктор по умолчанию? И какой подход был бы наименее грязным для этого?