函数式编程 - 数据类型
数据类型定义了对象可以具有的值的类型以及可以对其执行哪些操作。数据类型在使用之前应先声明。不同的编程语言支持不同的数据类型。例如,
- C支持char、int、float、long等。
- Python支持字符串、列表、元组等。
从广义上讲,有三种类型的数据类型 -
基本数据类型- 这些是程序员直接使用的预定义数据类型,用于根据要求仅存储一个值,即整数类型、字符类型或浮点类型。例如 - int、char、float 等。
派生数据类型- 这些数据类型是使用内置数据类型派生的,这些数据类型是由程序员设计的,用于根据其要求存储相同类型的多个值。例如 - 数组、指针、函数、列表等。
用户定义的数据类型- 这些数据类型是使用内置数据类型派生的,这些数据类型被包装到单个数据类型中,以根据要求存储相同类型或不同类型或两者的多个值。例如 - 类、结构等。
C++ 支持的数据类型
下表列出了 C++ 支持的数据类型 -
数据类型 | 尺寸 | 范围 |
---|---|---|
字符 | 1字节 | -128 至 127 或 0 至 255 |
无符号字符 | 1字节 | 0 至 255 |
签名字符 | 1字节 | -128 至 127 |
整数 | 4字节 | -2147483648 至 2147483647 |
无符号整数 | 4字节 | 0 至 4294967295 |
有符号整数 | 4字节 | -2147483648 至 2147483647 |
短整型 | 2字节 | -32768至32767 |
无符号短整型 | 2字节 | 0 至 65,535 |
有符号短整型 | 2字节 | -32768至32767 |
长整型 | 4字节 | -2,147,483,648 至 2,147,483,647 |
有符号长整型 | 4字节 | -2,147,483,648 至 2,147,483,647 |
无符号长整型 | 4字节 | 0 至 4,294,967,295 |
漂浮 | 4字节 | +/- 3.4e +/- 38(~7 位数字) |
双倍的 | 8字节 | +/- 1.7e +/- 308(~15 位) |
长双 | 8字节 | +/- 1.7e +/- 308(~15 位) |
Java支持的数据类型
Java 支持以下数据类型 -
数据类型 | 尺寸 | 范围 |
---|---|---|
字节 | 1字节 | -128 至 127 |
字符 | 2字节 | 0 至 65,536 |
短的 | 2字节 | -32,7688 至 32,767 |
整数 | 4字节 | -2,147,483,648 至 2,147,483,647 |
长的 | 8字节 | -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 |
漂浮 | 4字节 | -2147483648 至 2147483647 |
双倍的 | 8字节 | +9.223*1018 |
布尔值 | 1 位 | 对或错 |
Erlang 支持的数据类型
在本节中,我们将讨论 Erlang(一种函数式编程语言)支持的数据类型。
数字
Erlang 支持两种类型的数字文字,即整型和浮点型。看一下下面的示例,它展示了如何添加两个整数值 -
-module(helloworld). -export([start/0]). start() -> io:fwrite("~w",[5+4]).
它将产生以下输出 -
9
Atomics
Atomics是一个其值无法更改的字符串。它必须以小写字母开头,并且可以包含任何字母数字字符和特殊字符。当Atomics包含特殊字符时,应将其括在单引号 (') 内。看一下下面的例子可以更好地理解。
-module(helloworld). -export([start/0]). start()-> io:fwrite(monday).
它将产生以下输出 -
monday
注意- 尝试将Atomics更改为大写“M”的“Monday”。程序会产生错误。
布尔值
此数据类型用于将结果显示为true或false。看一下下面的例子。它展示了如何比较两个整数。
-module(helloworld). -export([start/0]). start() -> io:fwrite(5 =< 9).
它将产生以下输出 -
true
位串
位串用于存储非类型化内存区域。看一下下面的例子。它展示了如何将位串的 2 位转换为列表。
-module(helloworld). -export([start/0]). start() -> Bin2 = <<15,25>>, P = binary_to_list(Bin2), io:fwrite("~w",[P]).
它将产生以下输出 -
[15,25]
元组
元组是具有固定数量项的复合数据类型。元组的每一项称为一个元素。元素的数量就是元组的大小。以下示例演示如何定义 5 个术语的元组并打印其大小。
-module(helloworld). -export([start/0]). start() -> K = {abc,50,pqr,60,{xyz,75}} , io:fwrite("~w",[tuple_size(K)]).
它将产生以下输出 -
5
地图
映射是一种复合数据类型,具有可变数量的键值关联。映射中的每个键值关联称为关联对。该对的键和值部分称为elements。关联对的数量被称为地图的大小。以下示例演示如何定义 3 个映射的映射并打印其大小。
-module(helloworld). -export([start/0]). start() -> Map1 = #{name => 'abc',age => 40, gender => 'M'}, io:fwrite("~w",[map_size(Map1)]).
它将产生以下输出 -
3
列表
列表是一种具有可变数量术语的复合数据类型。列表中的每个术语称为一个元素。元素的数量称为列表的长度。以下示例演示如何定义包含 5 个项目的列表并打印其大小。
-module(helloworld). -export([start/0]). start() -> List1 = [10,15,20,25,30] , io:fwrite("~w",[length(List1)]).
它将产生以下输出 -
5
注意- Erlang 中未定义“String”数据类型。