当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。