Methods 朱莉娅用了什么方法?

Methods 朱莉娅用了什么方法?,methods,julia,multiple-dispatch,Methods,Julia,Multiple Dispatch,我已经定义了以下变量 julia> X = (1:10) * ones(1,10) 它定义了一个矩阵,每行等于相同的数字,列中的数字从1增加到10乘以1。我想知道函数*使用了哪种方法。我怎么能问朱莉娅这个问题呢?@你要找的是哪个: @which (1:10) * ones(1, 10) # *(A::AbstractArray{T,1}, B::AbstractArray{T,2}) at linalg/matmul.jl:89 它还将超链接到Julia的GitHub中定义的相应方法。

我已经定义了以下变量

julia> X = (1:10) * ones(1,10)

它定义了一个矩阵,每行等于相同的数字,列中的数字从1增加到10乘以1。我想知道函数
*
使用了哪种方法。我怎么能问朱莉娅这个问题呢?

@你要找的是哪个

@which (1:10) * ones(1, 10)
# *(A::AbstractArray{T,1}, B::AbstractArray{T,2}) at linalg/matmul.jl:89

它还将超链接到Julia的GitHub中定义的相应方法。

这就是我知道的@Daniel,我只想Julia告诉我,我使用的方法定义为
*(UnitRange{Int64},Array{Float64,2})
我不太擅长解释输出,但
@code\u warntype(1:10)*(1,10)
可能会告诉您需要知道的内容。就我所知(我强调这不是我所知道的),最终
*
似乎在调用
Base.LinAlg.generic\u matmul在两个输入
数组{Float64,2}
上。希望有一个更有知识的人能插手进来。有没有一种方法可以迭代地深入挖掘?也就是说,答案中引用的行再次调用
*
,但在两个抽象矩阵上。有没有办法让
@which
也告诉我们下一步调用了哪个方法?(大概在这种情况下,这是两个
矩阵{Float64}
?)的
*
。@colin不,我知道,但我确信有一种元编程方法可以做到这一点。@ColinTBowers如果你得到了那行代码,你可以通过
检查下一个-
*
,它(*,(矩阵{Float64},矩阵{Float64}))
手动。这是多重分派的缺点吗p@GnimucK. “
哪个(*,(矩阵{Float64},矩阵{Float64}))
”->是的,就是这样。正如amrods所建议的,这里可能有一个简洁的小函数,可以用来迭代整个链。感谢(你们两位)的回复。