Swift 5.7 มีอะไรใหม่บ้าง มาดูกัน!
หลังจากที่ Apple ได้ปล่อย xcode 14 ซึ่งมาพร้อมกับเครื่องมือใหม่ๆ ที่ช่วยให้เราทำงานได้ง่ายขึ้นหรือมีของใหม่ๆ มาให้เราเล่นกัน และหนึ่งในนั้นคือ Swift version 5.7 ที่ได้ใส่ลงมาใน xcode นี้ด้วย ในบทความนี้จะยกตัวอย่างที่นักพัฒนาอย่างเราจะเจอกันบ่อยๆ ไปลุยกันเลย
Swift คืออะไร
Swift คือภาษาสำหรับเขียนโปรแกรมใน eco system ของ apple เราสามารถใช้ภาษานี้ในการพัฒนาโปรแกรมเพื่อให้ใช้ในผลิตภัทธ์ของ apple ได้ครบ โดยที่ภาษา Swift จะเป็นภาษาที่เป็น open source จะได้รับการปรับปรุงมาจากบุคคลทั่วไป ซึ่งเป็นขอดีที่จะทำให้ภาษาไม่ตายตัวอยู่กับบริษัทใด บริษัทหนึ่ง และยังคงมีนักพัฒนาหลายๆ คนเข้าไปช่วยพัฒนาต่ออีกด้วย
มีอะไรใหม่ใน Swift 5.7
if-let แบบใหม่
อ้างอิงจาก SE-0345 ย้อนกลับไปถึงเรื่องชนิดของตัวแปร ในภาษา Swift จะรองรับชนิด optional หมายถึงตัวแปรจะสามารถเป็นค่าว่างได้ ทำให้นักพัฒนาสามารถเช็คได้ว่าตัวแปรที่เรากำลังจะใช้นั้นมีค่าอยู่จริงๆหรือไม่
โดยวิธีการเช็คและแปลงจาก optional เป็น non-optional จะมี 2 แบบ guard-let และ if-let ตามลำดับ
จากปัญหาที่เจอกัน เมื่อเราต้องแปลงจะต้องเจอรูปแบบโค๊ดแบบนี้ทุกที่ และถ้ายิ่งชื่อตัวแปรยาวประมาณ 8 เมตร เราคงจะต้องไปนั่งตีกับ swift lint ต่ออีกยก
วันนี้ Swift 5.7 ได้เพิ่มเติมเพื่อลดความซ้ำซ้อนของโค๊ด คือเราไม่ต้องไป =(เท่ากับ) ชื่อตัวแปรอีกรอบ ก็สามารถแปลงจาก optional เป็น non-optional ได้แล้ว อีกทั้งยังสามารถแปลงได้หลายตัวด้วยนะ
ง่ายเลยใช่ไหมละ ? แต่! ผมเจอข้อจำกัดหนึ่งอย่างครับ เรายังไม่สามารถใช้ท่านี้กับตัวแปรที่อยู่บน data model ได้
Multi statement closure แบบ return type ใดๆ
อ้างอิงจาก SE-0326 มีนักพัฒนาบอกว่า อยากได้ closure ฉลาดเพิ่มหน่อย ไม่จำเป็นต้องประกาศว่า closure นั้นจะ return ค่าอะไรกลับมาให้
Extensions on bound generic types
อ้างอิงจาก SE-0361 เหมาะสำหรับสาย generic type สุดๆ โดยที่ก่อนหน้านี้การที่เราจะเขียน extension ให้ตัวแปรที่เป็น generic ด้านใน จำเป็นที่ต้องเช็คของด้านในว่าเป็น generic type ที่เราต้องการหรือไหม ยกตัวอย่างสร้าง Extension Array โดยที่ element ด้านในเป็น String
แต่ feature ใหม่บน Swift 5.7 ทำให้เราสามารถเขียนในรูปนี้ได้เลย
เป็นไงบ้างครับสำหรับ 3 ตัวอย่างของใหม่ใน Swift 5.7 บทความหน้าผมจะพาไปเจาะลึกเรื่องของ protocol และ regex กัน ไว้รอติดตามอ่านกันได้นะครับ
สรุป
การเปลี่ยนแปลงใน Swift 5.7 อาจจะไม่มีการเปลี่ยนแปลงที่ใหญ่มากๆ แต่ก็พอทำให้นักพัฒนาอย่างเราๆ ประหยับเวลาไปได้เยอะนะครับ ไม่ว่าจะเป็นการลดความซ้ำซ้อน หรือแม้กระทั้งการปลดล๊อกเพื่อเพิ่มความสามารถของที่มีอยู่เดิม
สุดท้ายนี้ทุกคนสามารถติดตามผมได้ทาง CWStory.com และทาง Linkedin และฝากกดติดตามใน Medium ด้วยนะครับ :) แล้วพบกันใหม่ สวัสดี