目錄
枚舉類型
編輯在計算機編程中,枚舉類型(在R編程語言中也稱為枚舉、枚舉或因子,在統計學中稱為分類變量)是一種數據類型,由一組被稱為該類型的元素、成員、枚舉器或枚舉器的命名值組成。枚舉器的名稱通常是標識符,在語言中表現為常量。枚舉類型可以被看作是單位類型的一個退化的標簽聯盟。一個被聲明為具有枚舉類型的變量可以被賦予任何一個枚舉器作為值。換句話說,一個枚舉類型的值是彼此不同的,并且可以被比較和分配,但是程序員并沒有指定在計算機內存中有任何特定的具體表示;編譯器和解釋器可以任意地表示它們。例如,一副撲克牌中的四種花色可能是四個枚舉器,名為Club、Diamond、Heart和Spade,屬于一個名為suit的枚舉類型。如果一個變量V被聲明為其數據類型為suit,我們可以將這四個值中的任何一個分配給它。盡管枚舉器通常是不同的,但有些語言可能允許同一枚舉器在類型的聲明中列舉兩次。枚舉器的名稱在任何意義上都不需要在語義上完整或兼容。例如,一個叫做顏色的枚舉類型可能被定義為由紅色、綠色、斑馬線、缺失和培根的枚舉器組成。在一些語言中,枚舉類型的聲明也有意定義了其成員的排序;在其他語言中,枚舉器是無序的;在其他語言中,隱含的排序產生于編譯器將枚舉器具體地表示為整數。一些枚舉器類型可以被內置到語言中。例如,布爾類型通常是一個預定義的False和True值的枚舉。許多語言允許用戶定義新的枚舉類型。枚舉類型的值和變量通常用一些整數類型作為底層表示來實現。一些語言,特別是系統編程語言,允許用戶指定用于每個枚舉器的比特組合,這對于有效地將枚舉器的集合表示為固定長度的比特字符串是很有用的。在類型理論中,枚舉類型通常被看作是單位類型的標記聯合體。因為這種類型的形式是
枚舉類型的理由
編輯一些早期的編程語言最初并沒有枚舉類型。如果程序員想讓一個變量,例如myColor,有一個紅色的值,那么變量red將被聲明并分配一些任意的值,通常是一個整數常數。然后,變量red將被分配給myColor。其他技術將任意值分配給包含枚舉器名稱的字符串。這些任意值有時被稱為神奇的數字,因為通常沒有解釋這些數字是如何得到的,或者它們的實際值是否有意義。這些神奇的數字會使其他人更難理解和維護源代碼。另一方面,枚舉類型使代碼更具有自我記錄性。根據語言的不同,編譯器可以自動為枚舉器分配默認值,從而向程序員隱藏不必要的細節。這些值甚至可能對程序員不可見(見信息隱藏)。
枚舉類型還可以防止程序員編寫不合邏輯的代碼,例如對枚舉器的值進行數xxx算。如果要打印一個被分配了枚舉器的變量的值,一些編程語言也可以打印枚舉器的名稱而不是它的基本數值。另一個優點是,枚舉類型可以讓編譯器強制執行語義正確性。例如:myColor=TRIANGLE可以被禁止,而myColor=RED可以被接受,即使TRIANGLE和RED在內部都表示為1。從概念上講,一個枚舉類型類似于一個名詞表(數字代碼),因為該類型的每個可能值都被分配了一個獨特的自然數。因此,一個給定的枚舉類型是這個概念的具體實現。當順序是有意義的和/或用于比較時,那么一個枚舉類型就變成了一個順序類型。
枚舉類型的慣例
編輯編程語言往往有自己的,通常是多種編程風格和命名慣例。分配給枚舉的變量通常是一個單數形式的名詞,并經常遵循PascalCase或大寫的慣例,而小寫和其他則較少見。
幾種編程語言中的語法
編輯帕斯卡和語法相似的語言帕斯卡在帕斯卡中,一個枚舉類型可以通過在括號內的列表中列出數值來隱式聲明。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/170719/