函数式编程 - 元组
元组是一种复合数据类型,具有固定数量的项。元组中的每一项都称为一个元素。元素的数量就是元组的大小。
在C#中定义元组的程序
下面的程序演示了如何在C#(一种面向对象的编程语言)中定义一个包含四个项的元组并打印它们。
using System; public class Test { public static void Main() { var t1 = Tuple.Create(1, 2, 3, new Tuple<int, int>(4, 5)); Console.WriteLine("Tuple:" + t1); } }
它将产生以下输出:
Tuple :(1, 2, 3, (4, 5))
在Erlang中定义元组的程序
下面的程序演示了如何在Erlang(一种函数式编程语言)中定义一个包含四个项的元组并打印它们。
-module(helloworld). -export([start/0]). start() -> P = {1,2,3,{4,5}} , io:fwrite("~w",[P]).
它将产生以下输出:
{1, 2, 3, {4, 5}}
元组的优点
元组具有以下优点:
元组是固定大小的,也就是说,我们不能向元组添加或删除元素。
我们可以搜索元组中的任何元素。
元组比列表快,因为它们具有固定的值集。
元组可以用作字典键,因为它们包含不可变的值,例如字符串、数字等。
元组与列表的比较
元组 | 列表 |
---|---|
元组是不可变的,也就是说,我们不能更新其数据。 | 列表是可变的,也就是说,我们可以更新其数据。 |
元组中的元素可以是不同类型。 | 列表中的所有元素都是同一类型。 |
元组由围绕元素的圆括号表示。 | 列表由围绕元素的方括号表示。 |
元组的操作
在本节中,我们将讨论一些可以对元组执行的操作。
检查插入的值是否为元组
方法is_tuple(tuplevalues)用于确定插入的值是否为元组。如果插入的值是元组,则返回true,否则返回false。例如,
-module(helloworld). -export([start/0]). start() -> K = {abc,50,pqr,60,{xyz,75}} , io:fwrite("~w",[is_tuple(K)]).
它将产生以下输出:
True
将列表转换为元组
方法list_to_tuple(listvalues)将列表转换为元组。例如,
-module(helloworld). -export([start/0]). start() -> io:fwrite("~w",[list_to_tuple([1,2,3,4,5])]).
它将产生以下输出:
{1, 2, 3, 4, 5}
将元组转换为列表
方法tuple_to_list(tuplevalues)将指定的元组转换为列表格式。例如,
-module(helloworld). -export([start/0]). start() -> io:fwrite("~w",[tuple_to_list({1,2,3,4,5})]).
它将产生以下输出:
[1, 2, 3, 4, 5]
检查元组大小
方法tuple_size(tuplename)返回元组的大小。例如,
-module(helloworld). -export([start/0]). start() -> K = {abc,50,pqr,60,{xyz,75}} , io:fwrite("~w",[tuple_size(K)]).
它将产生以下输出:
5
广告