Đối với các chức năng được xác định trong gói, bạn có thể sử dụng less
hoặc @less
. Tên cũ, lấy tên hàm (và trả về định nghĩa đầu tiên, mà không cần phải là cái bạn muốn), sau này, một hàm gọi.
less(less) # First definition of less,
# with signature (String,Integer)
@less less(less) # Definition of less(f::Callable)
Nhưng điều này sẽ không hoạt động với các hàm bạn đã tự xác định trong REPL. Đối với những người, bạn có thể sử dụng code_typed
, nhưng nó chỉ trả về AST (trừu tượng cây cú pháp) của mã của bạn, ít dễ đọc hơn. Bạn cũng cần phải cung cấp loại đối số, vì có thể có một số chức năng có cùng tên: bạn có thể nhận chúng bằng 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))))
Nguồn
2014-10-06 23:57:13
bạn sẽ nhận được gì nếu bạn chỉ nhập tên của hàm vào trình thông dịch Julia? –
'' '(hàm chung với 1 phương thức)' '' – cantdutchthis