Bir pakette tanımlanan işlevler için less
veya @less
'u kullanabilirsiniz. Birincisi, bir işlev adı alır (ve ilk tanımını döndürür, istediğinizi olmayan ), ikincisi, bir işlev çağrısı.
less(less) # First definition of less,
# with signature (String,Integer)
@less less(less) # Definition of less(f::Callable)
Ancak bu, REPL'de tanımladığınız işlevlerle çalışmaz. Bunlar için code_typed
'u kullanabilirsiniz, ancak kodunuzun yalnızca daha az okunabilir olan AST (özet sözdizimi ağacı) değerini döndürür. Ayrıca, argümanlarının türünü de sağlamanız gerekir, çünkü aynı ada sahip birkaç işlev olabilir: 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))))
Sadece işlevin adını Julia yorumlayıcısına yazarsanız ne yaparsınız? –
'' '(1 yöntemle genel işlev)' '' – cantdutchthis