函數語言程式設計 - 資料型別



資料型別定義了物件可以具有的值型別以及可以對其執行的操作。在使用資料型別之前,應先宣告它。不同的程式語言支援不同的資料型別。例如:

  • C語言支援char、int、float、long等。
  • Python支援字串、列表、元組等。

廣義上講,資料型別分為三種:

  • 基本資料型別 - 這些是程式設計師直接使用的預定義資料型別,用於根據需要儲存單個值,例如整數型別、字元型別或浮點型別。例如 - int、char、float 等。

  • 派生資料型別 - 這些資料型別是使用內建資料型別派生的,由程式設計師設計用於根據需要儲存相同型別多個值。例如 - 陣列、指標、函式、列表等。

  • 使用者自定義資料型別 - 這些資料型別是使用內建資料型別派生的,它們被封裝成單個數據型別,用於根據需要儲存相同型別、不同型別或同時儲存這兩種型別的多個值。例如 - 類、結構體等。

C++支援的資料型別

下表列出了C++支援的資料型別:

資料型別 大小 範圍
char 1 位元組 -128 到 127 或 0 到 255
unsigned char 1 位元組 0 到 255
signed char 1 位元組 -128 到 127
int 4 位元組 -2147483648 到 2147483647
unsigned int 4 位元組 0 到 4294967295
signed int 4 位元組 -2147483648 到 2147483647
short int 2 位元組 -32768 到 32767
unsigned short int 2 位元組 0 到 65,535
signed short int 2 位元組 -32768 到 32767
long int 4 位元組 -2,147,483,648 到 2,147,483,647
signed long int 4 位元組 -2,147,483,648 到 2,147,483,647
unsigned long int 4 位元組 0 到 4,294,967,295
float 4 位元組 +/- 3.4e +/- 38 (~7 位)
double 8 位元組 +/- 1.7e +/- 308 (~15 位)
long double 8 位元組 +/- 1.7e +/- 308 (~15 位)

Java支援的資料型別

Java支援以下資料型別:

資料型別 大小 範圍
byte 1 位元組 -128 到 127
char 1 位元組 -128 到 127
short 1 位元組 -32,768 到 32,767
int 2 位元組 -2,147,483,648 到 2,147,483,647
long 8 位元組 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
float 2 位元組 -2147483648 到 2147483647
double 8 位元組 +9.223*1018
Boolean 1 位 True 或 False

Erlang支援的資料型別

在本節中,我們將討論Erlang(一種函數語言程式設計語言)支援的資料型別。

數字

Erlang支援兩種型別的數字文字,即整數浮點數。請看下面的例子,它展示瞭如何新增兩個整數值:

-module(helloworld).
-export([start/0]). 
start() -> 
   io:fwrite("~w",[5+4]). 

它將產生以下輸出:

9

原子

原子是一個其值不能更改的字串。它必須以小寫字母開頭,可以包含任何字母數字字元和特殊字元。當原子包含特殊字元時,應將其用單引號(')括起來。請看下面的例子以更好地理解。

-module(helloworld). 
-export([start/0]). 

start()-> 
   io:fwrite(monday). 

它將產生以下輸出:

monday

注意 - 嘗試將原子更改為以大寫“M”開頭的“Monday”。程式將產生錯誤。

Boolean

此資料型別用於將結果顯示為truefalse。請看下面的例子。它展示瞭如何比較兩個整數。

-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 

對映

對映是一個複合資料型別,具有可變數量的鍵值關聯。對映中的每個鍵值關聯稱為關聯對。對的部分稱為元素。關聯對的數量即為對映的大小。下面的例子展示瞭如何定義一個包含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中沒有定義'字串'資料型別。

廣告