tuples - 固定大小的非同质元组
问题描述
有没有办法定义一个只接受固定大小的元组但其中有不同数据类型的函数?
我们可以使用这样的东西
f(x::NTuple{N}...) where {N} = ...
强制执行相同大小的元组(但具有相同类型的内容),以及类似这样的东西
f(x::Tuple...) = ...
接受非同质序列(但长度可变)。
有没有办法同时实现两者?
解决方案
元组是协变的,请参阅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 = ...
推荐阅读
- python - 通过python插入时让SQL时间戳数据?
- windows - msbuild pack 指定版本?
- android - 关于 Android 的 Cordova 构建过程的一些问题
- automation - Freshdesk:自动化“评分”电子邮件
- xpages - 如何在链接标签字段中输入回车
- android - 如何更改 SwitchPreference 的 fontFamily 和 textSize?
- java - 从过滤器迁移到拦截器会导致 403 错误
- r - 一种更有效的填充矩阵的方法
- java - Api Call 在 Postman 中工作,但在 Java 中使用 OKHTTP(返回 ec:400)
- c# - 添加相机视图后绘制的对象丢失