对于包中定义的函数,您可以使用less
or @less
。
前者采用函数名称(并返回第一个定义,
不一定是您想要的),后者是函数调用。
less(less) # First definition of less,
# with signature (String,Integer)
@less less(less) # Definition of less(f::Callable)
但这不适用于您在 REPL 中定义的函数。
对于那些,你可以使用code_typed
,但它只返回 AST(抽象
代码的语法树),可读性较差。
您还需要提供参数的类型,
因为可以有多个同名的函数:
你可以用methods
.
f(x::Number) = x + 1
f(x::AbstractArray) = length(x)
methods(f)
# 2 methods for generic function "f":
# f(x::Number) at none:1
# f(x::AbstractArray{T,N}) at none:1
code_typed(f,(Number,)) # Give the argument types as a tuple
# 1-element Array{Any,1}:
# :($(Expr(:lambda, {:x}, {{},{{:x,Number,0}},{}}, :(begin # none, line 1:
# return x::Number + 1
# end))))