Swift: In-Out Parameters

Programming

Swift: In-Out Parameters

ประมาณ 1 ปีที่ผ่านมา

1 min read

inout คืออะไร

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

เมื่อไหร่ควรใช้

ตอบง่ายๆ ก็เมื่อต้องการเปลี่ยนแปลงค่าดั้งเดิมของตัวแปรนั้นๆ นั่นแหละ

ต่างจาก function แบบ return ยังไง

function ที่มีการ return type จะไม่มีการเปลี่ยนแปลงต้นฉบับ ต่อให้นำตัวแปรนั้นไปทำอะไรก็ตาม ค่าเดิมจะไม่ถูกเปลี่ยน

ตัวอย่าง

มาดูตัวอย่างกันหน่อย อย่างเช่น function swapValues เพื่อทำการสลับค่าระหว่าง 2 ตัวแปร

func swapValues<T>(_ a: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}
 
var x = 5, y = 10
swapValues(&x, &y)
print("x = \(x), y = \(y)") // x = 10, y = 5

ถ้าลอง print ค่าออกมาดู แน่นอนว่า ค่าที่ได้ สลับกันเรียบร้อย

Reference

Tags:

Swift