TS数据类型:从C++/Java/Python到TS看元组tuple—元组的来龙去脉
在C++有Java这种强类型语言中,常用的Array、List、Set ,在集合中只能是一种类型(可以复习下:《再谈Java数据结构—分析底层实现与应用注意事项)。
1 2 3 | int data[] = new int [ 3 ] List<String> person= new ArrayList<>(); Set<Integer> test = new TreeSet<>(); |
如果需要一个固定大小的不同类型值的集合,我们需要使用元组
C++元组简介
tuple是一个强大的允许存放多个不同类型数据的容器,是对pair的泛化。也可以把他当做一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体使程序更简洁,直观。std::tuple理论上可以有无数个任意类型的成员变量,而std::pair只能是2个成员,因此在需要保存3个及以上的数据时就需要使用tuple元组了(tuple(元组)在c++11中开始引用的。)。
1 2 3 4 | std::tuple<T1, T2, TN> t1; //创建一个空的tuple对象(使用默认构造),对应的元素分别是T1和T2...Tn类型,采用值初始化 std::tuple<T1, T2, TN> t2(v1, v2, ... TN); //创建一个tuple对象,它的两个元素分别是T1和T2 ...Tn类型; 要获取元素的值需要通过tuple的成员get<Ith>(obj)进行获取(Ith是指获取在tuple中的第几个元素,请看后面具体实例)。 std::tuple<T1&> t3(ref&); // tuple的元素类型可以是一个引用 std::make_tuple(v1, v2); // 像pair一样也可以通过make_tuple进行创建一个tuple对象 |
元组中的对象可以是任何不同的类型,具有任意长度
Java元组Tuple
元组(tuple),它是将一组对象直接打包存储与其中的一个单一对象.这个容器对象允许读取其中的元素.但是不允许向其中存放新的对象.(这个概念也称为数据传送对象,或信使)
python元组Tuple
Python 的集合式的数据类型list和tuple非常相似,不同的是:
tuple通过小括号( )定义,定义后无法编辑元素内容(即不可变),而list通过中括号[ ]定义,其元素内容可以编辑(即可变),编辑动作包含删除pop( )、末尾追加append( )、插入insert( ).
1 2 3 | list1 = [ 'cong' , 'rick' , 'long' ] / / list tupe1 = ( 'Jan' , 'Feb' , 'Mar' ) / / tuple ,元组元素不可以被修改,不能增加也不能删除。 tupeformList = tuple (list1) |
python的元组性质和java类似
元组和列表list一样,都可能用于数据存储,包含多个数据;
但是和列表不同的是:列表只能存储相同的数据类型,而元组不一样,它可以存储不同的数据类型,比如同时存储int、string、list等,并且可以根据需求无限扩展。
TypeScript元组Tuple
TypeScript把强类型射到了JavaScript内,使得JavaScript更像Java了,如:
let sites:string[] ----> String args[]
JavaScript数组本来就可以存放任意类型。但是TypeScript,就变成元组了。其实你不了解元组这个概念也可以照样用。就当类型都要指定就行。
let myTuple: [number, string, boolean] = [1, 'Poplar', true];
对于越界的元素,它的类型会被限制为元组中每个类型的联合类型
TypeScript元组继承自于函数编程语言(如 F#)——一家亲。
参考文章:
C++ tuple元组的基本用法(总结) https://blog.csdn.net/sevenjoin/java/article/details/88420885
C++中使用tuple https://blog.csdn.net/xiahn1a/article/details/41670203
Java元组Tuple介绍与使用 https://blog.csdn.net/u013412772/article/details/74298257
转载本站文章《TS数据类型:从C++/Java/Python到TS看元组tuple—元组的来龙去脉》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/typescript/2020_0413_8380.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-09-18 再谈javascriptjs原型与原型链及继承相关问题