สำหรับพวกเราที่ใช้ Swift มา แล้วเพิ่งเจอ Dictionary ก็อาจจะสงสัยแล้วว่าเอ๊ะ ไอนี้มันใช้ยังไง ต่างจาก List และ Array มากไหม?
มาๆ มาดูกันครับ ว่าวิธีการเก็บข้อมูลในตัวแปรประเภท Dictionary มันเป็นยังไงกัน
แนวคิดห้องเก็บของ
![](https://nextflow.in.th/wp-content/uploads/New-Drawing-2-1024x536.png)
จริงๆ Dictionary เป็นแนวคิดที่ค่อนข้างชัดเจน และเห็นภาพพอสมควร เพราะแนวคิดนี้ก็เหมือนการเอาพจนานุกรม หรือ Dictionary มาใช้นั่นเอง
แต่เนื่องจากปัจจุบัน พอเราต้องการแปลภาษาอะไร ก็เปิด Google Translate เลยใช่ไหม?
บางคนอาจจะไม่เคยเห็นหรือรู้จักพจนานุกรมก็ได้
นั่นคือ เพื่อทำให้เห็นภาพ เราลองนึกว่า Dictionary ตัวหนึง มีรูปร่างเหมือนห้องเก็บของก็ได้ โดยของที่อยู่ใน Dictionary ก็คือกล่องเก็บของที่มีป้ายแปะหน้ากล่องนั่นเอง
การสร้างและใช้งาน Dictionary ใน Swift
ทีนี้กฎของห้องเก็บของที่ชื่อ Dictionary นี้คือ
- ต้องบอกด้วยว่าเก็บอะไร
- ของทุกกล่องที่ ต้องแปะป้ายชื่อ
- ต้องบอกชนิดของป้ายชื่อด้วย
เช่นด้านล่างนี้ เป็นการตั้งตัวแปร Dictionary ชื่อ room แบบเปล่าๆ ขึ้นมา โดยป้ายแปะเป็นข้อความ String และของในกล่องก็ต้องเป็นข้อความ String เช่นกัน
var room: [String, String] = [:]
![](https://nextflow.in.th/wp-content/uploads/New-Drawing-3-1024x536.png)
หรือด้านล่างนี้เป็นการสร้าง Dictionary แล้วใส่ของเข้าไปเลย โดยในที่นี้จะถือว่าเราใช้ป้ายแปะเป็นแบบตัวเลข (Int
)
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
วิธีใช้ข้อมูลใน Dictionary
อันนี้ก็จะเรียกตามชื่อป้ายที่แปะไว้บนกล่องเลย เช่น
![](https://nextflow.in.th/wp-content/uploads/New-Drawing-4-1024x536.png)
os_log(responseMessages[200])
// ได้เป็น OK
และการเก็บข้อมูลใหม่ๆ ลงกล่อง ก็สามารถใช้ป้ายชื่ออ้างอิงกล่องได้เลย ถ้าพบว่ามีกล่องที่มีป้ายชื่อตรงกัน ก็จะแทนที่ข้อมูลเดิมลงไป
ถ้าไม่มีกล่องที่มีป้ายชื่อนั้นแปะอยู่ ก็จะเป็นการสร้างกล่องใหม่ขึ้นมาใส่ไว้ในห้องเก็บของของเรา
แต่ที่สำคัญมากๆ ก็คือ การแปะป้ายชื่อ และข้อมูลในกล่อง ต้องตรงกับที่ประกาศตั้งตัวแปร Dictionary เอาไว้ตอนต้นๆ ด้วยนะ
room["chair"] = "Muji chair"
// เก็บ "Muji chair" ลงกล่องแปะป้ายชื่อว่า "chair"
room["chair"] = "IKEA Chair"
// เก็บ "IKEA Chair" ลงไปแทนที่ข้อมูลเดิมในกล่อง "chair"
น่าจะเห็นภาพมากขึ้นกันน้า
อ้างอิง – Apple Swift Documentation