Thank you On 5 April 2016 at 15:47, Josh Langsfeld <jdla...@gmail.com> wrote:
> This is noted in the docs. See a few paragraphs down, "When a type is > applied like a function..." > > http://docs.julialang.org/en/release-0.4/manual/types/#composite-types > > On Tuesday, April 5, 2016 at 10:19:05 AM UTC-4, FANG Colin wrote: >> >> methods(TT) >> >> call(::Type{TT}, x::Float64, y::Float64) at In[22]:2 >> call(::Type{TT}, x, y) at In[22]:2 >> call{T}(::Type{T}, arg) at essentials.jl:56 >> call{T}(::Type{T}, args...) at essentials.jl:57 >> >> >> So I guess the rule is applied in call(::Type{TT}, x, y) >> >> What does it do? Does it try to convert(Float64, x) & convert(Float64, >> y)? I.e does it always try to convert each argument to the type of the >> field defined in the type? >> >> On 5 April 2016 at 15:11, Yichao Yu <yyc...@gmail.com> wrote: >> >>> On Tue, Apr 5, 2016 at 10:09 AM, FANG Colin <coli...@gmail.com> wrote: >>> > Sorry if this has been discussed somewhere as I am unable to find the >>> > relative post. >>> > >>> > immutable TT >>> > x::Float64 >>> > y::Float64 >>> > end >>> > >>> > function tt(x::Float64, y::Float64) >>> > x + y >>> > >>> > end >>> > tt(1,2) # doesn't work >>> > TT(1,2) # works >>> >>> There are automatic constructors defined with conversion not promotion. >>> See `methods(TT)` >>> >>> > >>> > What rule applies here for TT(1,2)? >>> >> >>