Для функций, определенных в пакете, вы можете использовать less
или @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))))
Что вы можете получить, если просто введите имя функции в интерпретатор Джулии? –
'' '(общая функция с 1 методом)' '' – cantdutchthis