有什么方法可以定义仅接受固定大小的元组,但其中包含不同数据类型的函数?
我们可以使用类似的东西
f(x::NTuple{N}...) where {N} = ...
强制执行相同大小(但内容类型相同)的元组,并且类似这样
f(x::Tuple...) = ...
接受非均质序列(但长度可变)。
有什么办法可以同时实现这两者?
答案 0 :(得分:3)
组是协变的,请参见https://docs.julialang.org/en/latest/manual/types/#Tuple-Types-1,因此您可以使用Any
来允许任何类型。因此,您可以通过以下方式之一进行操作:
f(x::Tuple{Any,Any}...) = ...
这对于元素较少的元组可能是可以的,或者这样:
f(x::Tuple{Vararg{Any,10}}...) = ...
或
f(x::NTuple{10, Any}...) = ...
这是一种通用方法,允许您使用参数(在此示例中为10
)来指定元组的元素数。
如果您不知道元组的大小,而只是希望它们的大小相同,则可以编写:
f(x::Tuple{Vararg{Any,N}}...) where N = ...
或
f(x::NTuple{N, Any}...) where N = ...