tuples vs records
What is differen开发者_StackOverflowce between tuples and records?
Both are product types which let you build types from multiple simpler types. Some languages treat tuples as a kind of record.
Definitions
A tuple is an ordered group of elements, like (10, 25).
A record is typically a group of named elements like { "x": 10, "y": 25 }
where the value has two fields labelled x
and y
and the value of field x
is 10
.
Etymology
The word "tuple" comes from the common "-tuple" suffix on "quintuple", "sextuple", "septuple", "octuple" which mean groups of 5, 6, 7, and 8 respectively.
The word "record" comes from data tables. You can think of all possible tuples with x
and y
fields as a table where columns correspond to fields and rows collect all the fields for a particular record instance.
value address field x field y
0xABCD 10 25
0x1234 42 "xyz"
Equivalence of product types
You can treat a tuple as a kind of record, where the index of an element in a tuple is its name within the equivalent record, so (10, 25)
is { "0": 10, "1": 25 }
. I believe Standard ML and related languages use records as the basic unit of type conjunction (algebraic data types provide type disjunction) and treat tuples as a kind of record in this way.
According to Wikipedia:
In computer science, a record (also called tuple or struct) is one of the simplest data structures, consisting of two or more values or variables stored in consecutive memory positions; so that each component (called a field or member of the record) can be accessed by applying different offsets to the starting address.
I would say there is little difference between a tuple and a record.
Record is a complete row of data elements of one table, let say a student has a record under roll no. 3 in one table, where as tuple is a super set of record in which data belongs to other tables also, e.g. rows of records of student roll no.3 in other tables in relationship i.e. attendance, results, contacts, fees etc. So, that whole lot of data set of one student from all tables is tuple. As I know it. Thanks.
精彩评论