สวิฟท์แจงนับ
การแจงนับเป็นเพียงชนิดข้อมูล แต่นี้เป็นเพียงชนิดของข้อมูลที่มีข้อมูลเฉพาะที่กำหนดเองซึ่งเป็นชุดของลักษณะทั่วไปของการเก็บรวบรวมข้อมูล
โครงสร้างการแจงนับสวิฟท์ที่คล้ายกับวัตถุประสงค์ C และ C, ฟังก์ชั่นการแจงนับ:
มันจะมีการประกาศในชั้นเรียนระดับสามารถเข้าถึงความคุ้มค่าโดยอินสแตนซ์
enum ยังสามารถกำหนดตัวสร้าง (initializers) เพื่อให้ค่าสมาชิกเริ่มต้น; สามารถขยายการทำงานของพวกเขาในการดำเนินงานพื้นฐานเดิม
คุณสามารถสังเกต Protocol (โปรโตคอล) เพื่อให้เป็นคุณสมบัติมาตรฐาน
ไวยากรณ์
คำหลัก enum สวิฟท์จะใช้ในการสร้างและการระบุคำจำกัดความของพวกเขาทั้งคู่วางไว้ในวงเล็บ A:
enum enumname { // 枚举定义放在这里 }
ตัวอย่างเช่นเรากำหนดในวันรุ่งขึ้นของการแจงนับสัปดาห์:
import Cocoa // 定义枚举 enum DaysofaWeek { case Sunday case Monday case TUESDAY case WEDNESDAY case THURSDAY case FRIDAY case Saturday } var weekDay = DaysofaWeek.THURSDAY weekDay = .THURSDAY switch weekDay { case .Sunday: print("星期天") case .Monday: print("星期一") case .TUESDAY: print("星期二") case .WEDNESDAY: print("星期三") case .THURSDAY: print("星期四") case .FRIDAY: print("星期五") case .Saturday: print("星期六") }
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
星期四
มูลค่า (ตามที่กำหนดในการแจงนับของ Sunday
, Monday
, ……
และ Saturday
) เป็นสมาชิกของค่าการแจงนับ (หรือสมาชิก) เดอะ case
คำแทนสมาชิกบรรทัดใหม่ของค่าจะถูกกำหนด
หมายเหตุ: C และวัตถุประสงค์ -C และเป็นสมาชิกที่แตกต่างกันการแจงนับสวิฟท์จะไม่ได้รับค่าจำนวนเต็มเริ่มต้นจะถูกสร้างขึ้น ในข้างต้น
DaysofaWeek
ตัวอย่างเช่นSunday
,Monday
,……
และSaturday
จะไม่ได้รับมอบหมายโดยปริยายค่า0
,1
,……
และ6
แต่สมาชิกเหล่านี้ตัวเองมีค่าการแจงนับที่สมบูรณ์แบบที่มีอยู่แล้วชัดเจนDaysofaWeek
ประเภท
var weekDay = DaysofaWeek.THURSDAY
weekDay
ชนิดก็อาจจะ DaysofaWeek
สรุปเมื่อมูลค่าที่อาจจะเริ่มต้นได้ เมื่อ weekDay
จะมีการประกาศเป็น DaysofaWeek
คุณสามารถใช้ไวยากรณ์ยากที่จะตั้งค่าให้อีก (.) DaysofaWeek
คุ้มค่า:
var weekDay = .THURSDAY
เมื่อ weekDay
เมื่อชนิดเป็นที่รู้จักมอบหมายอาจถูกมองข้ามชื่ออีกครั้งการแจงนับ ใช้ค่าการแจงนับประเภทอย่างชัดเจนทำให้โค้ดอ่านได้มากขึ้น
มันสามารถแบ่งออกเป็นมูลค่าการแจงนับที่เกี่ยวข้องกับค่าเดิม
ความแตกต่างระหว่างค่าความสัมพันธ์และความคุ้มค่าเดิม
ค่าสหสัมพันธ์ | ค่าเดิม |
---|---|
ชนิดที่แตกต่างกันของข้อมูล | ประเภทข้อมูลเดียวกัน |
ตัวอย่าง: enum {10,0.8 "สวัสดี"} | ตัวอย่าง: enum {10,35,50} |
สร้างค่าขึ้นอยู่กับค่าคงที่หรือตัวแปร | ราคา Pre-ประชากร |
ค่าสหสัมพันธ์เมื่อคุณสร้างสมาชิกใหม่คงที่หรือตัวแปรแจงนับจะถูกตั้งค่าและทุกครั้งเมื่อคุณทำมีเวลาค่าของมันอาจจะแตกต่างกัน | ค่าเดิมเป็นแบบเดียวกันเสมอ |
ค่าสหสัมพันธ์
ตัวอย่างต่อไปนี้เรากำหนดชื่อนักศึกษาของระบุชนิดก็สามารถเชื่อมโยงชื่อของค่า (int, Int, Int, Int) หรือมาร์คประเภทสตริง (String) ค่าความสัมพันธ์
import Cocoa enum Student{ case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("w3big") var studMarks = Student.Mark(98,97,95) switch studMarks { case .Name(let studName): print("学生的名字是: \(studName)。") case .Mark(let Mark1, let Mark2, let Mark3): print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。") }
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
学生的成绩是: 98,97,95。
ค่าเดิม
ค่าเดิมอาจจะเป็นสตริงตัวอักษรหรือจำนวนเต็มใด ๆ หรือจุดลอยตัวค่า แต่ละค่าเดิมในการประกาศ enum มันต้องไม่ซ้ำกัน
เมื่อค่าเดิมคือการแจงนับจํานวนเต็มโดยไม่มีการกำหนดที่ชัดเจนสำหรับสมาชิกแต่ละคนสวิฟท์โดยอัตโนมัติจะกำหนด
ตัวอย่างเช่นเมื่อใช้ค่าจำนวนเต็มเช่นเดิมค่านัยที่ได้รับมอบหมายเพิ่มขึ้นตามลำดับโดยหนึ่ง หากค่าแรกไม่ได้กำหนดค่าเริ่มต้นจะถูกตั้งค่าโดยอัตโนมัติไปยังศูนย์import Cocoa enum Month: Int { case January = 1, February, March, April, May, June, July, August, September, October, November, December } let yearMonth = Month.May.rawValue print("数字月份为: \(yearMonth)。")
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
数字月份为: 5。