函数式编程 - 元组

元组是一种具有固定数量项的复合数据类型。 元组中的每一项都称为元素。 元素的数量就是元组的大小。

在 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