用法:
invoke(f, argtypes::Type, args...; kwargs...)
為給定的泛型函數 f
調用與指定參數 args
上的指定類型 argtypes
匹配並傳遞關鍵字參數 kwargs
的方法。參數 args
必須符合 argtypes
中指定的類型,即不會自動執行轉換。此方法允許調用最具體的匹配方法以外的方法,這在明確需要更一般定義的行為時很有用(通常作為同一函數的更具體方法的實現的一部分)。
將invoke
用於您不編寫的函數時要小心。給定 argtypes
的定義是實現細節,除非函數明確聲明使用某些 argtypes
調用是公共 API 的一部分。例如,以下示例中 f1
和 f2
之間的更改通常被認為是兼容的,因為調用者通過正常(非 invoke
)調用看不到更改。但是,如果您使用 invoke
,更改是可見的。
例子
julia> f(x::Real) = x^2;
julia> f(x::Integer) = 1 + invoke(f, Tuple{Real}, x);
julia> f(2)
5
julia> f1(::Integer) = Integer
f1(::Real) = Real;
julia> f2(x::Real) = _f2(x)
_f2(::Integer) = Integer
_f2(_) = Real;
julia> f1(1)
Integer
julia> f2(1)
Integer
julia> invoke(f1, Tuple{Real}, 1)
Real
julia> invoke(f2, Tuple{Real}, 1)
Integer
相關用法
- Julia Core.ifelse用法及代碼示例
- Julia Core.isa用法及代碼示例
- Julia Core.isdefined用法及代碼示例
- Julia Core.NamedTuple用法及代碼示例
- Julia Core.typeof用法及代碼示例
- Julia Core.UnionAll用法及代碼示例
- Julia Core.nfields用法及代碼示例
- Julia Core.Function用法及代碼示例
- Julia Core.DomainError用法及代碼示例
- Julia Core.undef用法及代碼示例
- Julia Core.UndefVarError用法及代碼示例
- Julia Core.Array方法用法及代碼示例
- Julia Core.getfield用法及代碼示例
- Julia Core.ErrorException用法及代碼示例
- Julia Core.Vararg用法及代碼示例
- Julia Core.NTuple用法及代碼示例
- Julia Core.@big_str用法及代碼示例
- Julia Core.Type用法及代碼示例
- Julia Core.Task用法及代碼示例
- Julia Core.Union用法及代碼示例
- Julia Core.AssertionError用法及代碼示例
- Julia Core.Ref用法及代碼示例
- Julia Core.BoundsError用法及代碼示例
- Julia Core.Float64方法用法及代碼示例
- Julia Core.InexactError用法及代碼示例
注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Core.invoke — Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。