當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Julia Core.invoke用法及代碼示例

用法:

invoke(f, argtypes::Type, args...; kwargs...)

為給定的泛型函數 f 調用與指定參數 args 上的指定類型 argtypes 匹配並傳遞關鍵字參數 kwargs 的方法。參數 args 必須符合 argtypes 中指定的類型,即不會自動執行轉換。此方法允許調用最具體的匹配方法以外的方法,這在明確需要更一般定義的行為時很有用(通常作為同一函數的更具體方法的實現的一部分)。

invoke 用於您不編寫的函數時要小心。給定 argtypes 的定義是實現細節,除非函數明確聲明使用某些 argtypes 調用是公共 API 的一部分。例如,以下示例中 f1f2 之間的更改通常被認為是兼容的,因為調用者通過正常(非 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

相關用法


注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Core.invoke — Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。