Swift 5.7 มีอะไรใหม่บ้าง มาดูกัน!

Chawatvish
2 min readSep 27, 2022

--

หลังจากที่ 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 ตามลำดับ

Guard-let pattern
If-let pattern

จากปัญหาที่เจอกัน เมื่อเราต้องแปลงจะต้องเจอรูปแบบโค๊ดแบบนี้ทุกที่ และถ้ายิ่งชื่อตัวแปรยาวประมาณ 8 เมตร เราคงจะต้องไปนั่งตีกับ swift lint ต่ออีกยก

ชื่อตัวแปรยาว 8 เมตร

วันนี้ Swift 5.7 ได้เพิ่มเติมเพื่อลดความซ้ำซ้อนของโค๊ด คือเราไม่ต้องไป =(เท่ากับ) ชื่อตัวแปรอีกรอบ ก็สามารถแปลงจาก optional เป็น non-optional ได้แล้ว อีกทั้งยังสามารถแปลงได้หลายตัวด้วยนะ

multi guard-let unwrap optional parameter
multi if-let unwrap optional parameter

ง่ายเลยใช่ไหมละ ? แต่! ผมเจอข้อจำกัดหนึ่งอย่างครับ เรายังไม่สามารถใช้ท่านี้กับตัวแปรที่อยู่บน data model ได้

Multi statement closure แบบ return type ใดๆ

อ้างอิงจาก SE-0326 มีนักพัฒนาบอกว่า อยากได้ closure ฉลาดเพิ่มหน่อย ไม่จำเป็นต้องประกาศว่า closure นั้นจะ return ค่าอะไรกลับมาให้

ก่อนหน้า Swift 5.7
หลังจาก Swift 5.7 สามารถเขียนแบบนี้ได้

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 ด้วยนะครับ :) แล้วพบกันใหม่ สวัสดี

--

--