inout คืออะไร
inout
เป็นคีย์เวิร์ดใน Swift ที่เราใช้กำหนด parameter ของ function เพื่อเป็นการบอกว่า parameter นี้สามารถแก้ไขได้ใน function และเมื่อทำการแก้ไขแล้ว จะมีผลกับค่าเดิมภายนอก function ด้วย ว่าง่ายๆ ก็คือค่าเดิมถูกเปลี่ยนนั่นเอง
เมื่อไหร่ควรใช้
ตอบง่ายๆ ก็เมื่อต้องการเปลี่ยนแปลงค่าดั้งเดิมของตัวแปรนั้นๆ นั่นแหละ
ต่างจาก function แบบ return ยังไง
function ที่มีการ return type จะไม่มีการเปลี่ยนแปลงต้นฉบับ ต่อให้นำตัวแปรนั้นไปทำอะไรก็ตาม ค่าเดิมจะไม่ถูกเปลี่ยน
ตัวอย่าง
มาดูตัวอย่างกันหน่อย อย่างเช่น function swapValues
เพื่อทำการสลับค่าระหว่าง 2 ตัวแปร
ถ้าลอง print ค่าออกมาดู แน่นอนว่า ค่าที่ได้ สลับกันเรียบร้อย