Na http://julia.readthedocs.org/en/latest/manual/conversion-and-promotion/, jest dyskusja na temat dodawania liczb całkowitych do pływaków i tak dalej, a i na koniec mówiKiedy używany jest konwerter Julii()?
User-defined types can easily participate in this promotion system by defining methods for conversion to and from other types, and providing a handful of promotion rules defining what types they should promote to when mixed with other types.
Z tego wywnioskowałem, że przy określaniu własny typ liczbowy, ja po prostu potrzebne, aby określić, w jaki przekonwertować go do znanego typu, aby działał z funkcjami na nim. Ale próbowałem tego i nie wydaje się działać:
julia> type MyType
n::Int
end
julia> convert(::Type{Int}, x::MyType) = x.n
convert (generic function with 1 method)
julia> convert(Int, MyType(1))
1
julia> MyType(1) + 1
ERROR: `+` has no method matching +(::MyType, ::Int64)
można wyjaśnić różnicę pomiędzy promocją i nawrócenia? – asmeurer
'convert' mówi kompilatorowi, jak wykonać konwersję z' MyType' na 'Int', gdy już zostało to postanowione. "promot_rule" mówi kompilatorowi, jaką konwersję wykonać, gdy widzi zarówno 'Int' jak i' MyType' jako operandy - czy konwertować 'MyType' na' Int' lub 'Int' na' MyType'. – jch
Po otrzymaniu kodu otrzymuję komunikat "BŁĄD: brak promocji dla MyType i Int64 w + at promotion.jl: 158". – asmeurer