Did you import the convert and promote_rule functions?

On Tue, May 3, 2016 at 12:21 PM, Arda Aytekin <[email protected]> wrote:

> Hey,
>
> I am sorry if this question is either irrelevant or stupid, but I am
> having problems figuring out the type promotion and conversions.
> Could you please explain to me why the below code excerpt is not giving me
> what I want it to return:
>
> abstract A;
>
> immutable A1 <: A
>     num::Float64
> end;
>
> immutable A2 <: A
>     num::Int64
> end;
>
> # conversion
> A1(a::A2) = A1(a.num);
> convert(::Type{A1}, a::A2) = A1(a);
>
> # promotion
> promote_rule(::Type{A1}, ::Type{A2}) = A1;
>
> a1 = A1(1.);
> a2 = A2(2);
>
> promote(a1,a2)
> julia> (A1(1.0),A2(2))
>
> Why can I not get `(A1(1.0),A1(2.0))` for example, although the
> `convert(::Type{A1}, a::A2)` method and the `A1(a::A2)` constructor
> are working properly. Or, am I missing something?
>
> I tried to follow the promotion and conversion section of documentation
> <http://julia.readthedocs.org/>; however, I have not been successful so
> far.
>
> Thanks!
>

Reply via email to