Dictionary แปลตรงตัวได้ว่า “พจนานุกรม” ครับ ใน Swift เราใช้ตัวแปร Dictionary เก็บค่าของกลุ่ม คำที่ต้องการค้นหา (key) และ คำแปล (value) ยกตัวอย่างให้เห็นภาพชัดเจนก็เหมือนเราเปิดพจนานุกรมขึ้นมาเพื่อค้นหาความหมายของคำที่เราต้องการ ในการเขียนโปรแกรมประเภท ตรวจสอบเที่ยวบิน หรือ จะเป็น อัตราแลกเปลี่ยนเงิน หรือจะทำโปรแกรมแบบพจนานุกรมเลย ก็ยังได้ครับ
ลักษณะของตัวแปรแบบ Dictionary
Dictionary จะเก็บค่าเป็นกลุ่มของ [Key,Value] จะสังเกตุว่าตัวแปรจะคล้ายๆกับ Array ที่มี [index,element] แต่ข้อแตกต่างกันคือ
-ใน Dictionary เราสามารถกำหนดค่าให้ “Key” ได้ ไม่ว่าจะเป็นข้อความ ( String ) หรือ ตัวเลข ( Integer )
-แต่ใน Array นั้น index จะถูกกำหนดให้เรียงลำดับจาก 0 เสมอ
มาดูตัวอย่างแรก กับวิธีประกาศตัวแปร Dictionary กันครับ

อธิบาย : ตัวแปรแรกเราประกาศ dcCurrency เป็นตัวแปรชนิด Dictionary ที่มี key เป็น string และ value เป็น string ( <string,string> ) จากนั้นจึงมาใส่ค่าให้ dcCurrency
ตัวแปรที่ 2 : เราได้ประกาศ dcNumber เป็นตัวแปรชนิด Dictionary ที่มี key เป็น Integer และ value เป็น string (แม้ว่าไม่ได้กำหนดไว้ตอนแรก แต่เรากำหนดค่าตั้งต้นไว้ )
ตัวแปรที่ 3 : dcDictionary เป็นตัวแปรชนิด Dictionary ที่เก็บค่า key กับ value เป็น String จะสังเกตุว่าเราสามารถใส่ รูป หรือ Unicode ลงไปได้เลย
ทีนี่มาเรียนรู้คำสั่งพื้นฐานสำหรับตัวแปรชนิด Dictionary กัน
Count หรือ นับจำนวนสมาชิกทั้งหมด

ผลที่ได้

แสดงรายการทั้งหมดใน Dictionary โดยใช้ for in
EX1: dcCurrency
for (key, item) in dcCurrency : ระบบจะมอง ค่าในวงเล็บตัวแรก เก็บ key ตัวที่สองเก็บ value แล้วพิมพ์ผล


EX2: dcDictionary


ใช้ for in ดูเฉพาะค่า keys หลัก


การลบรายการทำได้ 3 แบบ
แบบ 1: ลบโดยกำหนด key ให้เป็น nil


แบบ 2 : ใช้คำสั่ง removeValueForKey โดยเราต้องกำหนด key ที่ต้องการลบลงไป

อธิบาย :เพื่อกันข้อผิดพลาดในการลบผิด key หรืออาจหา key นั้นๆไม่เจอ เราจึงใช้คำสั่ง “if let ” ตามด้วยชื่อตัวแปร “dcRemove” (จะเป็นชื่ออะไรก็ได้) เป็นตัวคอยตรวจสอบว่า ค่า dcDictionary.removeValueForKey (“Man”) นั้นเป็นจริงหรือไม่ คือค่า “Man” เป็น key จริงหรือไม่
ถ้าจริง ก็จะแสดงผล ถ้าไม่จริงจะขึ้นข้อความว่า “key not found”


แบบที่ 3 : ใช้คำสั่ง removeAll คล้ายกับเรื่อง Array


ค้นหาโดยใช้ key ด้วย if let

เราใช้ if let เพื่อตรวจสอบว่า key “Boy” นั้นมีอยู่จริงหรือไม่ ถ้ามีให้พิมพ์ค่า value ออกมา ถ้าไม่มี ให้พิมพ์ “Not Found”

การเปลี่ยนแปลงค่าภายใน Dictionary
เราจะใช้คำสั่ง updateValue ดูจากตัวอย่าง

ขั้นตอน 1 : เราต้องการเปลี่ยนข้อมูลใน key “Cat” โดยใช้ if let เพื่อเข้ามาตรวจสอบว่า “Cat” นั้นมีอยู่ใน Dictionary หรือไม่ โดยค่าเก่าจะถูกเก็บไว้ที่ sCatChange ก่อนที่จะถูกค่าใหม่ทับลงไป ถ้าหาไม่เจอให้พิมพ์ “No key found”
ขั้นตอน 2 : เราจะดึงค่าใหม่ของ “Cat” มา โดยต้องตรวจสอบก่อนว่า Key “Cat” มีจริง (ใช้ if let)
ขั้นตอน 3 : แสดงผลออกทางหน้าจอ ซึ่งถ้าไม่เจอ ก็พิมพ์ “Not Found”

แสดงผลสรุปของ dcDictionary จะเห็นว่า “Man” , “Elephant” หายไปแล้ว และรูปแมวใน “Cat” ก็เปลี่ยนไปด้วย


ลองเอา Dictionary ไปฝึกเล่นฝึกใช้ดูนะครับ เพราะโปรแกรมหลายๆตัวเราคงต้องพึ่ง Dictionary ไม่มากก็น้อยครับ
ติดปัญหาหรือมีข้อติชมยังไงส่ง email ได้ที่ thaiswiftclass@gmail.com
หรือทาง facebook https://www.facebook.com/thaiswiftclass
2 thoughts on “ตัวแปรชนิด Dictionary”