Screen Shot 2557-10-01 at 6.08.21 PM

Play & Learn: Swift ทบทวนบทเรียนนอกกรอบ Array ด้วย #GOT

#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

ตัวละครหลักของซีรีย์เรื่องนี้คือ ครอบครัว Starks ที่เรียกได้ว่าเป็นครอบครัวที่ตกที่นั่งลำบากที่สุดในเรื่องนี้ สมาชิกครอบครัวประกอบไปด้วย Ned หรือ Eddard คนพ่อ, Catelyn คนแม่ ตามด้วยลูกคนโต Robb ลูกนอกสมรส Jon (ไม่อยู่ในรูป) ลูกสาว 2 คน คือ Sansa และ Arya ลูกชายอีก 2 คนคือ Bran และ Rickon

Screen Shot 2557-10-01 at 5.14.04 PM

สมาชิกครอบครัวมีทั้งหมด 8 คน ตามภาพ เราสามารถเขียนคำสั่งตัวแปร Array ได้ดังภาพข้างบน หากลองเขียนโปรแกรมลงไป เราจะได้ผลลัพธ์ดังนี้

ตัวแปร Array จะมี Index เริ่มต้นที่ 0 ดังนั้นการนับไล่จำนวนของ Array นั้นจะนับที่ 0,1,2,3,4,5,6,7 รวมเป็น 8 ครับ

Screen Shot 2557-10-01 at 5.16.31 PM

ภาพข้างบนเป็นรูปแบบการเขียนคำสั่งเทียบให้ มองให้เห็นภาพอีกที

การเรียกตัวแปร Array โดยอ้างจาก Index

ทีนี้ถ้าเราต้องการเรียก Println หรือดึงคำสั่ง Swift ให้พิมพ์ข้อมูลบางตัวที่อยู่ใน Array ออกมา โดยความคาดหวังของเราคือการดึงสมาชิกในครอบครัว สักคนใดคนหนึ่ง ตัวอย่างเช่น ต้องการเรียก สมาชิกคนที่ 3 และคนที่ 5 ของบ้านออกมา คำสั่งก็คือ

Screen Shot 2557-10-01 at 5.32.01 PM

ผลลัพธ์ที่ปรากฏก็คือ

Screen Shot 2557-10-01 at 5.32.29 PM

คำสั่งยอดฮิตที่ชอบใช้ร่วมกับ Array 

คำสั่งยอดฮิตที่เราจะพบคือ isEmpty() และ Count() ครับ ใช้บ่อยกันแน่นอน ตัวแรกคือการเช็คว่า Array นั้นว่างมีข้อมูลอยู่หรือไม่ ส่วนตัวที่สองคือการนับชุดข้อมูลที่มีอยู่ใน Array

วิธีใช้งานคำสั่งก็ง่ายแสนง่ายครับ ตามนี้เลย

Screen Shot 2557-10-01 at 6.01.51 PM

จะเห็นว่าคำสั่งในการตรวจสอบนั้นง่ายมากแค่ starkFamily.isEmpty ก็จะ Return มาให้เราเลยว่า True หรือ False ส่วนการนับ Count จำนวนข้อมูลในตัวแปร Array นั้นก็ง่ายมากแค่ starkFamily. count แค่นั้นเองครับ

การเรียกช่วงข้อมูลของ Array หรือ Array Range (บางทีเรียก Sub Array)

บางครั้งเราต้องการ Println ตัวข้อมูลใน Array ไล่ออกมา แต่ถ้าเราไม่ได้ต้องการทั้งหมด เราต้องการแค่ ช่วงชุดข้อมูลของ 0 ถึง 1 หรือ 2 ถึง 5 เราสามารถใช้คำสั่งง่ายๆ จากตัวอย่างข้างล่าง การเรียก Range ตั้งแต่ข้อมูลชุดที่ 0 ถึง 3

ได้เลยครับ ตัวอย่างอธิบายก็ตามภาพเลยครับ เข้าใจง่ายดี

Screen Shot 2557-10-01 at 6.08.21 PM

 

ซ้ายคือ เรียกชุดข้อมูลตั้งแต่ Index ตัวที่ 0 ไป 3 แต่ไม่ต้องแสดงผล Index ที่ 3, ส่วนทางความคือการเรียกชุดข้อมูลจาก Index ตัวที่ 0 ไป 3 โดยรวม Index 3 ไปด้วย

ตัวอย่างการใช้คำสั่ง

 

Screen Shot 2557-10-01 at 6.09.59 PM

 

จะเห็นว่าเราสามารถแสดง  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 นั่นเอง

Screen Shot 2557-10-01 at 6.15.17 PM

ใช้คำสั่ง Append เพิ่มข้อมูลลง Array ชุดเดิมต่อท้ายข้อมูลชุดเก่าตามนี้

Screen Shot 2557-10-01 at 6.17.04 PM

วิธีเพิ่มข้อมูล Array อีกวิธี คือ การใช้ Operator “+=”

นอกจาก Hodor แล้วยังมีตัวละครหญิงคนเถื่อนอย่าง Osha ที่เคยเข้ามาทำร้าย Bran แล้วพ่ายแพ้ต่อ Robb เลยถูกจับมาเป็นทาส แต่ดูแลดีเลยมาเข้าข้างของตระกูล Starks กลายเป็นคนมาช่วยดูแล Bran อีกคน เราก็เลยลองเพิ่ม Osha เข้าไปในครอบครัวของ Starks เหมือนกัน

Screen Shot 2557-10-01 at 6.25.35 PMจะเพิ่มข้อมูลเแบบเป็นชุดก็ทำได้นะครับ เช่น หมาป่าโลกันต์ สัตว์เลี้ยงของ ลูกๆ ครอบครัว Starks ครับ ก็ใช้คำสั่งตามภาพนี้ได้

Screen Shot 2557-10-01 at 6.30.50 PM

Screen Shot 2557-10-01 at 6.31.42 PM

เพิ่ม Array  โดยคำสั่ง Insert

เป็นวิธีที่เพิ่มข้อมูล แทรกระหว่างชุดข้อมูลเดิมได้ ครอบครัว Starks เคยนำลูกชายของ กบฎ ที่ชื่อว่า Theon มาเลี้ยงดูเหมือนลูก และภายหลังจะทราบว่า Theon นั้นทรยศครอบครัวนี้ไป หากลองย้อนกลับไปแล้ว ความสัมพันธ์ของ Theon นั้นเปรียบเสมือนน้องชายของ Robb และเป็นพี่ชายคนหนึ่งของ Jon ตำแหน่งที่เราจะแทรกเข้าไปในครอบครัวนั้น Theon ควรอยู่ในตำแหน่งต่อท้าย Robb นั่นคือ ตำแหน่ง 3 หรือ คนที่ 4

Screen Shot 2557-10-01 at 6.47.42 PM

คำสั่งที่ใช้ได้เลยคือ Insert Method ครับ ซึ่งเราสามารถเขียนได้ดังนี้

Screen Shot 2557-10-01 at 6.48.31 PM

เป็นการแทรก Theon เข้าโดย แทรกแทนตำแหน่งที่ 3 ผ่านคำสั่ง

รลบข้อมูลในตัวแปร Array

ไฮไลท์ของซีรีย์ Game of Thrones นั้นคือ ฉาก สะเทือนใจ ที่ปรากฏอย่างน้อยๆ 1 ฉากในแต่ละซีชัน หากว่าใครได้ดูครับ

Screen Shot 2557-10-01 at 6.50.35 PM

Eddard คนพ่อถูกตัดคอในฐานะกบฎโค่นกษัตริย์ ในซีซัน 1 ส่วน Robb และ Catelyn ก็ถูกลอบฆ่าในฉาก Red Wedding ในซีซีนที่ 3 ดังนั้นผังการตายของตัวละครในครอบครัวนี้ จะมีคนที่ตายไปคือ Eddard, Catelyn และ Robb

Screen Shot 2557-10-01 at 6.52.59 PM

คำสั่ง Delete ข้อมูลใน Array จะสามารถเขียนได้ด้วยตัวอย่างต่อไปนี้ครับ

Screen Shot 2557-10-01 at 6.53.49 PM

คำสั่งในการลบ ตำแหน่งนั้นๆ คือ

โดย i แทนด้วยตำแหน่ง Index นั้น ผลลัพธ์ของการ Delete Array ก็จะเป็นดังนี้ครับ

Screen Shot 2557-10-01 at 6.55.20 PM

ข้อมูลตำแหน่ง 0,1,2 ก็จะถูกลบออกไปจาก Array ของ starkFamily ทันทีครับ

สรุป: หวังว่านี่จะเป็นการบทเรียนเกี่ยวกับภาษา Swift กับการใช้งาน Array ที่น่าจะอธิบายความรู้การเขียนโปรแกรมได้น่าสนุกแล้วเข้าใจง่ายสุดๆ ครับ

AboutBanyapon Poolsawasd

เว็บมาสเตอร์ daydev.com เว็บไซต์สำหรับนักพัฒนาโปรแกรมบน iOS และ Android รวมไปถึง Digital Marketing มารับจ๊อบเขียนบทความเอามันส์ที่นี่

Leave a Reply