สร้างตัวชุดแปรเพื่อใช้งานเฉพาะทาง Enumeration

ใน Swift เราสามารถสร้างกลุ่มของตัวแปรขึ้นมาใช้เองได้หลายแบบ แต่ละแบบก็จะมีหลักการประกาศ และวิธีนำไปใช้ตามที่เราต้องการ ต่างแบบต่างก็มีข้อจำกัดของตัวเองไปมาดูแบบแรกกันก่อนครับ เราเรียกว่า Enumeration

เข้าใจ Enumeration

เราจะทำการใช้ Enumeration เมื่อต้องการสร้างชุดตัวแปรมาใช้เฉพาะทาง ในส่วนใดส่วนนึงของงานเรา

ให้เราลองนึกถึงเกมที่ผู้เล่นเดินได้ 4 ทิศ ซ้าย ขวา ขึ้น ลง แล้วแต่ละทิศจะแสดงผลหรือให้ค่าที่แตกต่างๆกัน

การประกาศ Enumeration ใน Swift

ThaiSwiftClass Begin Enumeration basic 1

ThaiSwiftClass Begin Enumeration basic 1

 จากตัวอย่างแรกเราสร้าง Enumeration ชื่อ “WalkDirection” กำหนดให้ตัวแปรนี้มีเงื่อนไขเฉพาะ 5 เงื่อนไข

เราลองประกาศตัวแปรชนิด WalkDirection ขึ้นมากับหนดเงื่อนไขไปในตัว

ThaiSwiftClass Begin Enumeration basic 1 test

ThaiSwiftClass Begin Enumeration basic 1 test

จากตัวอย่าง : เรากำหนด playerWalk ให้เข้าเงื่อนไข ‘Stay’ แล้วลอง run program ดู

ThaiSwiftClass Begin Enumeration basic 1 result

ThaiSwiftClass Begin Enumeration basic 1 result

ระบบจะรู้ว่า playerWalk ใน สถานะ stay นั้นมีความหมายว่าอย่างไร

ตัวอย่างที่ 2

ThaiSwiftClass Begin Enumeration basic 2

ThaiSwiftClass Begin Enumeration basic 2

สร้าง Enumeration ชื่อ SmartPhone มาเก็บเงื่อนไข iPhone, Samsung และ Nokia แล้วนำไปใช้งาน

ThaiSwiftClass Begin Enumeration basic 2 test

ThaiSwiftClass Begin Enumeration basic 2 test

กำหนดให้ sMyPhone เป็น ชนิด iPhone จาก SmartPhone.iPhone

ผลการ Run Program

ThaiSwiftClass Begin Enumeration basic 2 result

ThaiSwiftClass Begin Enumeration basic 2 result

 

นอกจากการกำหนดเงื่อนไขทั่วไปแล้ว Enumeration ยังสามารถกำหนด รายละเอียดเงื่อนไขเพิ่มเติมโดยใส่ประเภทของตัวแปร

เข้าไปในได้ เรียกว่า Associated Value

ThaiSwiftClass Begin Enumeration basic Associated value 1

ThaiSwiftClass Begin Enumeration basic Associated value 1

สร้าง Enumeration ชื่อ MusicStar เก็บเงื่อนไข

RockBand สามารถกำหนดค่า ชื่อวง (BandName) , นักร้อง (Vocals), นักกีตาร์ (Guitarist) ,มือเบส (Bassist), มือกลอง (Drummer) และ นักเล่นเปียโน (Pianist)

SingerStar มีแค่นักร้อง (Singer)

แล้วนำไปใช้งานดู

ThaiSwiftClass Begin Enumeration basic Associated value 1_1

ThaiSwiftClass Begin Enumeration basic Associated value 1_1

เราประกาศตัวแปชื่อ BodySlam เป็น วงดนตรี RockBand ใน MusicStar

ประกาศตัวแปร Palmy เป็นนักร้องเดี่ยว

สร้าง Function ขึ้นมาตรวจสอบเงื่อนไขของ Enumeration

ThaiSwiftClass Begin Enumeration basic Associated value 1_2

ThaiSwiftClass Begin Enumeration basic Associated value 1_2

ในเงื่อนไขเราสามารถสร้างตัวแปรมารับค่าได้ภายในได้

เรียกใช้งาน Function MusicBand

ThaiSwiftClass Begin Enumeration basic Associated value 1_3

ThaiSwiftClass Begin Enumeration basic Associated value 1_3

ผลการทำงานจาก MusicBand(Bodyslam)

ThaiSwiftClass Begin Enumeration basic Associated result

ThaiSwiftClass Begin Enumeration basic Associated result

ผลการทำงานจาก MusicBand(Palmy)

ThaiSwiftClass Begin Enumeration basic Associated result 2

ThaiSwiftClass Begin Enumeration basic Associated result 2

 

เราสามารถนำกำหนดค่าให้ตัวแปรใน Enumeration (Raw Values) และค้นหาได้ (toRaw)

ThaiSwiftClass Begin Enumeration basic Raw Values

ThaiSwiftClass Begin Enumeration basic Raw Values

จากตัวอย่าง ตัวแปร prog_languange กำหนดค่าเป็นตัวเลขจำนวนเต็ม (Int) และในเงื่อนไขก็สามารถกำหนดค่าให้แก่เงื่อนไขแต่ละตัวได้

ลองมาดูตัวอย่างให้เห็นภาพกว่านี้

เราสร้าง buttonPress เป็น Enumeration ไว้คอยรับค่าจาก keyboard ว่า user กดปุ่มอะไรเข้ามาในเงื่อนไขที่กำหนดไว้แล้ว

ThaiSwiftClass Begin Enumeration basic Raw Values 1

ThaiSwiftClass Begin Enumeration basic Raw Values 1

 

กดปุ่ม
เข้าเงื่อนไข
b MoveRight
a MoveLeft
 b MoveRight
 w MoveUp
 s MoveDown
 space bar fire

กำหนดตัวแปรมารับค่าการกด สมมติเรากด space bar

ThaiSwiftClass Begin Enumeration basic Raw Values 1_1

ThaiSwiftClass Begin Enumeration basic Raw Values 1_1

เราสามารถตรวจสอบเงื่อนไขได้สองวิธี

วิธีแรก : สร้างตัวแปรมารับค่าการกด แล้วใช้ fromRaw ค้นหาเงื่อนไข ว่า “space bar” มีอยู่ใน Enumeration ชื่อ buttonPress หรือไม่

ThaiSwiftClass Begin Enumeration basic Raw Values 1_2

ThaiSwiftClass Begin Enumeration basic Raw Values 1_2

ถ้าเจอเราจะใช้ chkbutton.toRaw เพื่อนำค่าตามเงื่อนไขออกมาแสดง นั่นคือ

ThaiSwiftClass Begin Enumeration basic Raw Values 1_2 result

ThaiSwiftClass Begin Enumeration basic Raw Values 1_2 result

 

ส่วนวิธีที่สอง ใช้ Switch เพื่อตรวจสอบเงื่อนไขของ chkbutton

ThaiSwiftClass Begin Enumeration basic Raw Values 1_3

ThaiSwiftClass Begin Enumeration basic Raw Values 1_3

ผลของการกด space bar

ThaiSwiftClass Begin Enumeration basic Raw Values 1_3 result

ThaiSwiftClass Begin Enumeration basic Raw Values 1_3 result

 

ลองฝึกและลองเอาไปใช้งานกันดูนะครับ Enumeration จะช่วย ให้งานเราง่ายขึ้นเยอะเพราะจะช่วยจัดการตัวแปรที่มีเงื่อนไขเฉพาะ ให้เป็นกลุ่มๆไปง่ายต่อการใช้งานจริง

 

แนะนำติชมได้ตลอดนะครับ ที่ thaiswiftclass@gmail.com และทาง https://www.facebook.com/thaiswiftclass