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