1. 程式人生 > 實用技巧 >TS資料型別:從C++/Java/Python到TS看元組tuple—元組的來龍去脈

TS資料型別:從C++/Java/Python到TS看元組tuple—元組的來龍去脈

在C++有Java這種強型別語言中,常用的Array、List、Set ,在集合中只能是一種型別(可以複習下:《再談Java資料結構—分析底層實現與應用注意事項)。

intdata[]=newint[3]
List<String>person=newArrayList<>();
Set<Integer>test=newTreeSet<>();

如果需要一個固定大小的不同型別值的集合,我們需要使用元組

C++元組簡介

tuple是一個強大的允許存放多個不同型別資料的容器,是對pair的泛化。也可以把他當做一個通用的結構體來用,不需要建立結構體又獲取結構體的特徵,在某些情況下可以取代結構體使程式更簡潔,直觀。std::tuple理論上可以有無數個任意型別的成員變數,而std::pair只能是2個成員,因此在需要儲存3個及以上的資料時就需要使用tuple元組了(tuple(元組)在c++11中開始引用的。)。

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( ).

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++中使用tuplehttps://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