Latest web development tutorials

สวิฟท์แจงนับ

การแจงนับเป็นเพียงชนิดข้อมูล แต่นี้เป็นเพียงชนิดของข้อมูลที่มีข้อมูลเฉพาะที่กำหนดเองซึ่งเป็นชุดของลักษณะทั่วไปของการเก็บรวบรวมข้อมูล

โครงสร้างการแจงนับสวิฟท์ที่คล้ายกับวัตถุประสงค์ 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。