如何在Julia中将参数显式键入为函数
我试图确保传递给函数的第三个参数是函数本身。如何设置该显式类型如何在Julia中将参数显式键入为函数,julia,Julia,我试图确保传递给函数的第三个参数是函数本身。如何设置该显式类型 下面的示例是我想做的,其中运算符实际上是一个数学函数,如+、%、^,等等。在Julia中显式键入参数作为函数与常规显式类型相同 下面是一个简单的示例,其中运算符被显式地类型化为函数: julia> function math(numOne::Int64, numTwo::Int64, operator::Function) operator(numOne, numTwo) end julia> math(1,
下面的示例是我想做的,其中运算符实际上是一个数学函数,如+、%、^,等等。在Julia中显式键入参数作为函数与常规显式类型相同 下面是一个简单的示例,其中运算符被显式地类型化为函数:
julia> function math(numOne::Int64, numTwo::Int64, operator::Function)
operator(numOne, numTwo)
end
julia> math(1, 1, +)
2
julia> math(3, 2, ^)
9
julia> math(3, 2, 3)
ERROR: MethodError: no method matching math(::Int64, ::Int64, ::Int64)
Closest candidates are:
math(::Int64, ::Int64, ::Function) at REPL[9]:2
Stacktrace:
[1] top-level scope at REPL[13]:1
我想说的是,最好避免使用类型显式地注释该参数。虽然Julia中有一个
函数
抽象类型,但任何对象都可以使用调用重载进行调用。并非所有函数都可以随意编辑以使我的答案更完整,因为我不知道这会如何改变行为。但是请注意,并非所有函数都可以“调用”Julia中的对象的类型是函数的子类型。一个最显著的例子是来自PyCall.jl
包的Python函数,可能还有类型构造函数。因此,将类型限制为函数
通常不是一个好主意。是否存在需要显式键入的情况?这有助于提高绩效吗?