Function 在类型内部存储函数
通常,人们希望严格定义它们的类型,同时对方法保留松散的类型限制(因为后者会自动专门化,因此不会获得性能增益)。因此我知道,对于定义函数,使用Function 在类型内部存储函数,function,types,julia,Function,Types,Julia,通常,人们希望严格定义它们的类型,同时对方法保留松散的类型限制(因为后者会自动专门化,因此不会获得性能增益)。因此我知道,对于定义函数,使用::Base.Callable是一种很好的做法。但是,当在类型中存储函数时会发生什么情况 在v0.5中,Function和Base.Callable都是抽象类型,因此 type TestType f::Base.Callable # or ::Function end 不会严格打印。可以使用 type TestType{T<:Base.Calla
::Base.Callable
是一种很好的做法。但是,当在类型中存储函数时会发生什么情况
在v0.5中,Function
和Base.Callable
都是抽象类型,因此
type TestType
f::Base.Callable # or ::Function
end
不会严格打印。可以使用
type TestType{T<:Base.Callable}
f::T
end
type TestType{T我个人在犹豫时,我更喜欢参数化版本,因为它更通用。如果您有参数化类型,则执行TestType{Any}
或TestType{Function}
非常简单,并且这些类型的行为与未参数化的TestType
完全相同
例如,Base
有Vector{T}
,它既可以用于Vector{Any}
这样的特定情况,也可以用于Vector{Int}
这样的特殊情况,同样,您可以有TestType{T}
,这对TestType{Any}
或TestType{typeof(sin)都有用
我个人会更进一步,推荐Any
而不是Base.Callable
,以捕捉像多项式
这样的情况。是的,这些是折衷。不确定是否还有其他答案。