函数能不能作为参数传入另一个函数,函数的类型是什么?

函数能不能作为参数传入另一个函数,函数的类型是什么?

现在Julia里面每一个函数都有一个类型,比如试试这个

julia> foo(x) = x
foo (generic function with 1 method)

julia> df = typeof(foo)
typeof(foo)

julia> df
typeof(foo)

julia> typeof(df)
DataType

他们都是抽象类型 Function 的子类

julia> isabstracttype(Function)
true

julia> df <: Function
true

你可以把这些函数当作变量传递,当然没有问题的!

但是目前没有实现能够用来检测函数参数类型的模板类型,所以你只能选择写 typeof(some_func_name)或者就 Function

@thautwarm 在MLStyle里面貌似自己写了一个这样的参数类型?

2 个赞

函数类型都是个Function,见Luo的答案. 但你可以自己造有类型的函数,例如Typed Func