บทนี้จะมาเรียนเรื่องการประกาศและใช้ตัวแปรแบบ Array ก่อนอื่นเราต้องมารู้จักกันก่อนว่า Array คืออะไร มีประโยชน์ยังไงครับ
Array คือการเก็บตัวแปรได้ทีเดียวเป็นกลุ่มๆ ยกตัวอย่างถ้าเราต้องการเก็บรายชื่อนักเรียนทั้งห้อง หรือ รายการสินค้า (Shopping List) หรือรายการที่จะทำในแต่ละวัน (to-do list) โดยจะแบ่งออกเป็นสองส่วนคือ ห้อง (index) และ สมาชิก (Element)
ลองมาดูโครงสร้างและการประกาศตัวแปรแบบ Array กันก่อนครับ

การประกาศตัวแปรแบบ Array เราจะใช้ [ ] ครอบชนิดของตัวแปร เช่น String , Integer , Double หรือ Float หรือเราสามารถระบุค่าที่ต้องการลงไปเลยก็ได้
ดูจากบรรทัดแรก var sTodoList : [String] = [] เราได้ ประกาศตัวแปรชื่อ sTodoList เป็น Array ชนิด ข้อความ (String) แต่ยังไม่มีสมาชิกใดๆอยู่ในนั้น [ ]
บรรทัดที่ 2 : var sShoppingList : [String] = [“Milk”,“Water”,“Rice”,“Noodle”] เราได้ประกาศตัวแปร sShoppingList เป็น Array ชนิดข้อความ (String) โดย กำหนดสมาชิกเป็นสิ่งของในรายการซื้อของเรา “Milk”, “Water”, “Rice”, “Noodle”
ทั้งสองแบบที่ผ่านมาเป็นการประกาศแบบ Type Safe ที่เรียนมาในบท เขียนโปรแกรมแรกกับ Swift : ตัวแปรและแสดงผล ส่วนการประกาศในแบบที่ 3 จะเป็นแบบ Type Inference คือไม่กำหนดชนิดให้ชัดเจน แต่ยังไงก็ตาม Swift จะมองค่าที่อยู่ใน Array และจะอนุมานว่าค่าที่อยู่ในตัวแปรหมายถึงชนิดอะไร
บรรทัดที่ 3 : var sMyBelonging = [“Bags”,“Macbook Air”,“Macbook Pro”]
ฉนั้นชนิดของ sMyBelonging จึงเป็น String เพราะสมาชิกในนั้นประกอบด้วยข้อมูลประเภทข้อความ (String)
มาดูโครงสร้างตัวแปรแบบ Array ของ sShoppingList กัน : ใน Array ค่าลำดับหรือเรียกง่ายๆว่าห้อง (index) จะเริ่มต้นที่ 0 เสมอ และเป็นค่าบ่งชี้ว่า ค่าที่ต้องการ (Element) อยู่ลำดับที่เท่าไร
Index | 0 | 1 | 2 | 3 | 4 |
Element | Milk | Water | Rice | Noodle | Eggs |
คราวนี้มาดูคำสั่งหลักๆและวิธีใช้ Array กันครับ
คำสั่งที่สำคัญๆสำหรับการใช้งาน Array (เราจะใช้ “.” ต่อท้ายเพื่อดึงคำสั่ง) เช่น
– การนับจำนวน (Count)
– เพิ่มจำนวน (Append หรือ Insert)
– การลบ (Remove)
ตัวอย่าง การนับจำนวน (Count)

จากตัวอย่าง : เราจะใช้ “.count” เพื่อนับจำนวนสมาชิกทั้งหมดใน Array ของ Shopping List และจะแสดงสมาชิกทั้งหมดออกมาทางหน้าจอ

ผลคือเราได้ จำนวนสมาชิกคือ 5 และ แสดงรายชื่อสมาชิกทั้งหมด (คือรายการสินค้า หรือ Shopping List นั่นเอง)
ทีนี้มาดูวิธีเพิ่มและลดจำนวนสมาชิกใน Array กันต่อ
การเพิ่มจำนวนใน Array
1. แบบใช้คำสั่ง Append

รูปแบบ .append(สมาชิกใหม่ที่ระบุต้องตรงกับชนิดของ Array นั้นๆ)
จากตัวอย่าง : เราได้เพิ่ม Lemon ต่อท้ายสมาชิกที่มีอยู่ ทำให้ตอนนี้รายการซื้อของเรามีทั้งหมดมี 6 ชนิดแล้ว
Index | 0 | 1 | 2 | 3 | 4 | 5 |
Element | Milk | Water | Rice | Noodle | Eggs | Lemon |

2. แบบใช้คำสั่ง Insert
รูปแบบ .insert(สมาชิกใหม่ที่ระบุต้องตรงกับชนิดของ Array นั้นๆ , ตำแหน่งของสมาชิกใหม่)
จากตัวอย่าง : เราได้ระบุสมาชิกใหม่ “Orange Juice” ไว้ในลำดับที่ 1 แทนที่ของ “Water” ทำให้ “Water” ย้ายไป index ที่ 2 ผลการทำงานเป็นดังนี้
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
Element | Milk | OrangeJuice | Water | Rice | Noodle | Eggs | Lemon |

ต่อไปมาดูวิธีการลบสมาชิกใน Array บ้าง
การลบข้อมูลใน Array (Remove)
1.แบบใช้คำสั่ง RemoveAtIndex

รูปแบบ .removeAtIndex(ตำแหน่งของสมาชิก) ในตัวอย่างนี้เราทำงานลบตำแหน่งที่ 2 ของสมาชิกคือ “Water” ออกไป ทำให้สมาชิกที่เหลือได้ตำแหน่งใหม่ร่นลงมา
Index | 0 | 1 | 2 | 3 | 4 | 5 |
Element | Milk | OrangeJuice | Rice | Noodle | Eggs | Lemon |

2.แบบใช้คำสั่ง RemoveRange

รูปแบบ .removeRange(ช่วงของตำแหน่งที่ต้องการลบ)
จากตัวอย่างเราต้องการลบสมาชิกตั้งแต่ 1-3 ใน Swift เราใช้รูปแบบการเขียนช่วงเป็น “1…3” ลงไป มาดูผลการทำงาน
Index | 0 | 1 | 2 |
Element | Milk | Eggs | Lemon |

3.แบบใช้คำสั่ง RemoveAll

รูปแบบ .removeAll(ต้องการเก็บจำนวนห้องของสมาชิกไว้หรือไม่? true / false)
ในทีนี้การเก็บจำนวนห้องของสมาชิกไว้หรือไม่ขึ้นอยู่กับว่าเราต้องการ reset ตัวแปร Array นั้นทิ้งไปเลยจนไม่เหลือ index อยู่ หรือต้องการคงจำนวนห้องสำหรับสมาชิกไว้ (แต่สมาชิกทั้งหมดจะถูกลบอยู่ดี) โดยถ้าเราต้องการรู้จำนวน index ใน Array นั้นๆจะใช้ .capacity ในการแสดงผลดังกล่าว
จากตัวอย่างเรากำหนด keepCapacity เป็น false คือไม่ต้องการเก็บห้องไว้และทำการลบสมาชิกทั้งหมดออกจาก Array Shopping List

4. ลบข้อมูลทั้งหมดของ Array ด้วยการตั้งแค่ init
ตัวอย่าง sShoppingList = [] แล้วจะได้ผลดังนี้
![ThaiSwiftClass Array Remove All by []](http://www.thaiswiftclass.com/wp-content/uploads/2014/09/ThaiSwiftClass-Array-Remove-All-Result.jpg)
มาลองดึงข้อมูลจาก Array กันบ้าง
1.การใช้คำสั่ง For ดึงข้อมูลใน Array

จากตัวอย่าง เราใช้คำสั่ง For ที่เรียนรู้มาจากบท Control Flow : Loop (Part 1) เพื่อวิ่งเข้าไปหาข้อมูล index และสมาชิกเพื่อนำมาแสดงผล
รูปแบบ for(เริ่มจาก index 0,ให้วิ่งไปจนถึง index สุดท้าย,ไปทีละ index)
ระบบจะแสดงรายการ index จากค่า iFor และชื่อสมาชิกจาก sMyBelonging[ค่า iFor แทนค่า index เพื่อดึงสมาชิกประจำห้องหรือ index นั้นๆออกมา]

2.การใช้คำสั่ง For in ดึงข้อมูลใน Array

จากตัวอย่างเราสามารถใช้คำสั่ง for in เข้าไปดึงค่าสมาชิกออกมาได้เลย โดยใช้ตัวแปร sItem ซึ่งเป็นชนิดเดียวกับสมาชิกใน Array อยู่แล้วแทรกเข้าไปใน sMyBelonging เพื่อดึงผลออกมาแสดง

ก็จบกันไปสำหรับการใช้ Array เบื้องต้นนะครับ ผมพยายามรวบคำสั่งที่ใช้บ่อยๆมาให้ลองฝึกเขียนกันไปให้คล่องก่อนนะครับ บทต่อไปจะกล่าวถึงตัวแปรอีกประเภทคล้ายๆ Array แต่จะเรียกว่า Dictionary แล้วมันดียังไง อดใจรอไม่นานครับ จะรวบรวมวิธีและตัวอย่างง่ายๆมาให้ลองกัน
แนะนำติชมได้ตลอดที่ thaiswiftclass@gmail.com และทาง https://www.facebook.com/thaiswiftclass