#GOT ที่ว่าไม่ใช่อะไรหรอกครับมันคือ ซีรีย์ Game of Thrones ซีรีย์ดังช่อง HBO ที่มีไปหลายซีซั่นแล้ว แล้วมันเกี่ยวอะไรกับภาษา Swift ของ iOS8 กันแน่?
ขอแนะนำตัวก่อน @daydev นะครับโผล่มาเป็น Guest Blogger ให้เว็บนี้ซะหน่อยเพราะเนื้อหาของเค้าดีจริง ก็ไม่มีอะไรมากครับพอดีไปเจอไอเดียการนำเสนอบทเรียนจากนาย JOEY DEVILLA, “Globalnerdy.com”
ทำไมต้อง [Array]
ทำไมถึงเลือกที่จะพูดถึง Array ก็เพราะว่าตัวแปรชุด Array นั้นเป็นตัวแปลยอดฮิตที่หลายคน “ไม่ค่อยจะเข้าใจมัน” กว่าจะเข้าใจก็คือ เรียนจบทำงานมาได้สัก 2-3 ปีแล้ว (อ้างอิงจาก นักศึกษาที่สอนที่มหาวิทยาลัย ตลอด 5 รุ่น)
ทำไมต้อง #GOT – Game of Thrones
ทำไมถึงเลือกที่จะเอาตัวอย่างของซีรีย์ Game of Thrones มาอธิบายการทำงานของ Array เหรอครับ เหตุผลคือ 1. ชอบที่ฝรั่งเกรียนคนนี้เขียนไว้, 2. ถ้าให้เอานักการเมืองไทยมาอธิบายการทำงาน Array พาลจะทำให้เว็บไซต์โดนอุ้ม ซีรีย์ฮิตที่แหละที่น่าสนใจที่สุดแล้ว
มาเริ่มบทเรียนกันหน่อยดีกว่า
ตัวละครหลักของซีรีย์เรื่องนี้คือ ครอบครัว Starks ที่เรียกได้ว่าเป็นครอบครัวที่ตกที่นั่งลำบากที่สุดในเรื่องนี้ สมาชิกครอบครัวประกอบไปด้วย Ned หรือ Eddard คนพ่อ, Catelyn คนแม่ ตามด้วยลูกคนโต Robb ลูกนอกสมรส Jon (ไม่อยู่ในรูป) ลูกสาว 2 คน คือ Sansa และ Arya ลูกชายอีก 2 คนคือ Bran และ Rickon
สมาชิกครอบครัวมีทั้งหมด 8 คน ตามภาพ เราสามารถเขียนคำสั่งตัวแปร Array ได้ดังภาพข้างบน หากลองเขียนโปรแกรมลงไป เราจะได้ผลลัพธ์ดังนี้
1 |
<span style="font-size: 16px; line-height: 1.5;">[Eddard, Catelyn, Robb, Jon, Sansa, Arya, Bran, Rickon] </span> |
ตัวแปร Array จะมี Index เริ่มต้นที่ 0 ดังนั้นการนับไล่จำนวนของ Array นั้นจะนับที่ 0,1,2,3,4,5,6,7 รวมเป็น 8 ครับ
ภาพข้างบนเป็นรูปแบบการเขียนคำสั่งเทียบให้ มองให้เห็นภาพอีกที
การเรียกตัวแปร Array โดยอ้างจาก Index
ทีนี้ถ้าเราต้องการเรียก Println หรือดึงคำสั่ง Swift ให้พิมพ์ข้อมูลบางตัวที่อยู่ใน Array ออกมา โดยความคาดหวังของเราคือการดึงสมาชิกในครอบครัว สักคนใดคนหนึ่ง ตัวอย่างเช่น ต้องการเรียก สมาชิกคนที่ 3 และคนที่ 5 ของบ้านออกมา คำสั่งก็คือ
ผลลัพธ์ที่ปรากฏก็คือ
คำสั่งยอดฮิตที่ชอบใช้ร่วมกับ Array
คำสั่งยอดฮิตที่เราจะพบคือ isEmpty() และ Count() ครับ ใช้บ่อยกันแน่นอน ตัวแรกคือการเช็คว่า Array นั้นว่างมีข้อมูลอยู่หรือไม่ ส่วนตัวที่สองคือการนับชุดข้อมูลที่มีอยู่ใน Array
วิธีใช้งานคำสั่งก็ง่ายแสนง่ายครับ ตามนี้เลย
จะเห็นว่าคำสั่งในการตรวจสอบนั้นง่ายมากแค่ starkFamily.isEmpty ก็จะ Return มาให้เราเลยว่า True หรือ False ส่วนการนับ Count จำนวนข้อมูลในตัวแปร Array นั้นก็ง่ายมากแค่ starkFamily. count แค่นั้นเองครับ
การเรียกช่วงข้อมูลของ Array หรือ Array Range (บางทีเรียก Sub Array)
บางครั้งเราต้องการ Println ตัวข้อมูลใน Array ไล่ออกมา แต่ถ้าเราไม่ได้ต้องการทั้งหมด เราต้องการแค่ ช่วงชุดข้อมูลของ 0 ถึง 1 หรือ 2 ถึง 5 เราสามารถใช้คำสั่งง่ายๆ จากตัวอย่างข้างล่าง การเรียก Range ตั้งแต่ข้อมูลชุดที่ 0 ถึง 3
1 |
starkFamily[0...3] |
ได้เลยครับ ตัวอย่างอธิบายก็ตามภาพเลยครับ เข้าใจง่ายดี
ซ้ายคือ เรียกชุดข้อมูลตั้งแต่ Index ตัวที่ 0 ไป 3 แต่ไม่ต้องแสดงผล Index ที่ 3, ส่วนทางความคือการเรียกชุดข้อมูลจาก Index ตัวที่ 0 ไป 3 โดยรวม Index 3 ไปด้วย
ตัวอย่างการใช้คำสั่ง
จะเห็นว่าเราสามารถแสดง Range หรือช่วงของ Array ได้ในตัวอย่างข้างบน คือ [2…7] เราก็จะดึง Robb มาจนถึง Rickon เลยครับ โดยไม่มี Eddard คือ 0 และ Catelyn คือ 1 มาปนในคำสั่ง
การเพิ่ม Data ข้อมูลไป Index ใน Array
หรือพูดตรงๆ ก็คือ Adding Data ลง Array ที่มีอยู่โดยไปเพิ่มต่อท้ายครับ, ในซีรีย์ Game of Thrones จะมีตัวละครหนึ่งที่คอยช่วยเหลือ Bran ตลอดนั่นคือ จอมพลังที่พูดได้แค่ชื่อตัวเองอย่าง Hodor เข้ามา นับว่าเป็นตัวเด่นเพราะ Bran สามารถย้ายจิตไปควบคุม Hodor ออกต่อสู้ก็บ่อยครั้ง
เราก็เลยอยากจะเพิ่ม Hodor เข้าไปในครอบครัวของ starksFamily ครับ คำสั่งที่คุ้นๆ กันคือ append method นั่นเอง
ใช้คำสั่ง Append เพิ่มข้อมูลลง Array ชุดเดิมต่อท้ายข้อมูลชุดเก่าตามนี้
วิธีเพิ่มข้อมูล Array อีกวิธี คือ การใช้ Operator “+=”
นอกจาก Hodor แล้วยังมีตัวละครหญิงคนเถื่อนอย่าง Osha ที่เคยเข้ามาทำร้าย Bran แล้วพ่ายแพ้ต่อ Robb เลยถูกจับมาเป็นทาส แต่ดูแลดีเลยมาเข้าข้างของตระกูล Starks กลายเป็นคนมาช่วยดูแล Bran อีกคน เราก็เลยลองเพิ่ม Osha เข้าไปในครอบครัวของ Starks เหมือนกัน
จะเพิ่มข้อมูลเแบบเป็นชุดก็ทำได้นะครับ เช่น หมาป่าโลกันต์ สัตว์เลี้ยงของ ลูกๆ ครอบครัว Starks ครับ ก็ใช้คำสั่งตามภาพนี้ได้
เพิ่ม Array โดยคำสั่ง Insert
เป็นวิธีที่เพิ่มข้อมูล แทรกระหว่างชุดข้อมูลเดิมได้ ครอบครัว Starks เคยนำลูกชายของ กบฎ ที่ชื่อว่า Theon มาเลี้ยงดูเหมือนลูก และภายหลังจะทราบว่า Theon นั้นทรยศครอบครัวนี้ไป หากลองย้อนกลับไปแล้ว ความสัมพันธ์ของ Theon นั้นเปรียบเสมือนน้องชายของ Robb และเป็นพี่ชายคนหนึ่งของ Jon ตำแหน่งที่เราจะแทรกเข้าไปในครอบครัวนั้น Theon ควรอยู่ในตำแหน่งต่อท้าย Robb นั่นคือ ตำแหน่ง 3 หรือ คนที่ 4
คำสั่งที่ใช้ได้เลยคือ Insert Method ครับ ซึ่งเราสามารถเขียนได้ดังนี้
เป็นการแทรก Theon เข้าโดย แทรกแทนตำแหน่งที่ 3 ผ่านคำสั่ง
1 |
starkFamily.insert("Theon", atIndex: 3) |
การลบข้อมูลในตัวแปร Array
ไฮไลท์ของซีรีย์ Game of Thrones นั้นคือ ฉาก สะเทือนใจ ที่ปรากฏอย่างน้อยๆ 1 ฉากในแต่ละซีชัน หากว่าใครได้ดูครับ
Eddard คนพ่อถูกตัดคอในฐานะกบฎโค่นกษัตริย์ ในซีซัน 1 ส่วน Robb และ Catelyn ก็ถูกลอบฆ่าในฉาก Red Wedding ในซีซีนที่ 3 ดังนั้นผังการตายของตัวละครในครอบครัวนี้ จะมีคนที่ตายไปคือ Eddard, Catelyn และ Robb
คำสั่ง Delete ข้อมูลใน Array จะสามารถเขียนได้ด้วยตัวอย่างต่อไปนี้ครับ
คำสั่งในการลบ ตำแหน่งนั้นๆ คือ
1 |
starkFamily.removeAtIndex(i) |
โดย i แทนด้วยตำแหน่ง Index นั้น ผลลัพธ์ของการ Delete Array ก็จะเป็นดังนี้ครับ
ข้อมูลตำแหน่ง 0,1,2 ก็จะถูกลบออกไปจาก Array ของ starkFamily ทันทีครับ
สรุป: หวังว่านี่จะเป็นการบทเรียนเกี่ยวกับภาษา Swift กับการใช้งาน Array ที่น่าจะอธิบายความรู้การเขียนโปรแกรมได้น่าสนุกแล้วเข้าใจง่ายสุดๆ ครับ
1 |
ผู้เขียน: <a href="http://www.facebook.com/banyapon" target="_blank">บัญญพนต์ พูลสวัสดิ์ </a>เว็บมาสเตอร์ <a href="http://www.daydev.com" target="_blank">daydev.com</a> เว็บไซต์สำหรับนักพัฒนาโปรแกรมบน iOS และ Android รวมไปถึง Digital Marketing มารับจ๊อบเขียนบทความเอามันส์ที่นี่ |