元组的概念
元组(Tuple)是一种数据结构,它是一个不可变的有序元素序列。由于元组是不可变的,因此,无法修改它们的值。 一般来说,元组比数组或列表占用更少的内存空间。 元组允许像数组一样进行切片和索引,但没有删除或更改任何元素的方法。 与数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。 元组起源于函数编程语言(如 F#),这些语言中会频繁使用元组。
元组的长度是固定的,即一旦定义了一个元组类型的实例,它的长度不能再被更改。 元组类型是不可变类型,即一旦定义了一个元组类型的实例,它的内容不能再被更新
使用场景
我们通常可能会用到不确定类型,确定数量的情况下使用类型时,可以考虑元组。总之我感觉更多在面向函数编程使用的多,但是它的优点也很明显,就是基础类型,不像面向对象那样,动不动就定义个对象,对象是引用类型所以性能上肯定比基础类型差。 需要了解什么是元组,那么在java、golang是没用名面上的元组类型的,而python是有元组基础类型的
那么在仓颉中的写法是如何呢?我们可以看下以下代码
Cangjie:
package cangjieDemo
main(): Int64 {
var tuple = (true,"Alan",18,"男")
println("是否选中 ${tuple[0]}, 姓名:${tuple[1]} , 年龄:${tuple[2]} ,性别:${tuple[3]}")
return 0
}
输出后
在python中定义元组是怎么样的
Python:
if __name__ == '__main__':
myTuple = ("Alan",18,True)
print(myTuple)
我还是特别喜欢pycharm的智能提醒,敲个Tab就完善了代码,下图所示
golang: 在 go 中没有排面的元组,单通过泛型来定义也可以,所以这样就啰嗦了,相对其他语言
type Pair[L, R any] func() (L, R)
func TwoTuple[T1, T2 any](v1 T1, v2 T2) Pair[T1, T2] {
return func() (T1, T2) {
return v1, v2
}
}
func PrintPoint() {
point := TwoTuple(1, "Test")
x, y := point()
fmt.Printf("point at { x: %d, y: %s }\n", x, y)
}