การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout
เปิดให้ฟังก์ชันเปลี่ยนค่าของผู้เรียก
การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout เป็นบทเรียน Mojo Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Mojo Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน
บางครั้งคุณต้องเปลี่ยนค่า
การยืมอนุญาตให้อ่านได้เท่านั้น แต่บางครั้งฟังก์ชันจำเป็นต้องแก้ไขค่าของผู้เรียกจริง ๆ เช่น การเพิ่มตัวนับ ✏️
พบกับ inout
แนวทางinoutทำให้ฟังก์ชันเข้าถึงค่าเพื่อเปลี่ยนแปลงได้ การเปลี่ยนแปลงภายในฟังก์ชันจะสะท้อนกลับไปยังตัวแปรของผู้เรียก
เข้าและออก
ชื่อบอกความหมายไว้อย่างชัดเจน: ค่าจะถูกส่ง เข้า ไป คุณแก้ไขค่า แล้วค่าที่อัปเดตจะถูกส่งกลับออกมาให้ผู้เรียกใช้ โดยไม่มีการส่งสำเนากลับมา
การระบุพารามิเตอร์
เขียน inout ไว้หน้าชื่อพารามิเตอร์ จากนั้นการกำหนดค่าภายในฟังก์ชันจะอัปเดตตัวแปรต้นฉบับโดยตรง
fn increment(inout n: Int):
n += 1การเรียกใช้
ส่งตัวแปรเข้าไป แล้วดูว่าตัวแปรนั้นเปลี่ยนแปลงหลังการเรียกใช้ ฟังก์ชันแก้ไขค่าของผู้เรียกใช้ โดยตรง จึงไม่จำเป็นต้องมีค่าที่ส่งกลับ
var count = 5
increment(count)
print(count) # 6ต้องแก้ไขค่าได้
อาร์กิวเมนต์ที่ส่งให้พารามิเตอร์ inout ต้องเป็น var ที่แก้ไขค่าได้ คุณไม่สามารถส่งค่าคงที่หรือค่าที่มีการยืมมาให้ได้
ต้องใช้โดยเฉพาะขณะถูกยืม
ขณะที่ฟังก์ชันถือการอ้างอิงแบบ inout อยู่ จะไม่มีสิ่งอื่นเข้าถึงค่านั้นได้ กฎเรื่อง การเข้าถึงโดยเฉพาะนี้ช่วยป้องกันการแก้ไขที่ขัดแย้งกัน
ไม่มีสำเนาที่ซ่อนอยู่
เช่นเดียวกับการยืม inout ทำงานผ่านการอ้างอิง จึงไม่มี สำเนาเต็มรูปแบบ คุณจึงแก้ไขค่าได้โดยไม่ต้องเสียต้นทุนในการทำซ้ำ
ผู้เรียกใช้ยังคงเป็นเจ้าของ
สำหรับ inout ผู้เรียกใช้ยังคงมี ความเป็นเจ้าของ ฟังก์ชันเพียงยืมค่าเพื่อแก้ไขเป็นระยะเวลาที่เรียกใช้ แล้วจึงส่งการควบคุมกลับคืน
เมื่อใดควรเลือกใช้ inout
ใช้ inout เมื่อหน้าที่ทั้งหมดของฟังก์ชันคือการ อัปเดตค่าที่ผู้เรียกใช้จะนำไปใช้ต่อ เช่น การเพิ่มขนาดบัฟเฟอร์หรือการรีเซ็ตฟิลด์
อ่านกับแก้ไข เปรียบเทียบกัน
จนถึงตอนนี้: borrowed หมายถึงอ่านอย่างเดียว ส่วน inout หมายถึงอ่านและ เขียน การเลือกแบบที่เหมาะสมช่วยบอกผู้อ่านได้อย่างชัดเจนว่าฟังก์ชันทำอะไร
ตรวจสอบสั้น ๆ
มาดูกันว่า inout ทำอะไรได้บ้าง
สรุป
inout ช่วยให้ฟังก์ชันแก้ไขค่าของผู้เรียกใช้โดยตรงผ่านการอ้างอิงและไม่มีการทำสำเนา ผู้เรียกใช้ยังคงเป็นเจ้าของค่าตลอด ระยะเวลานั้น 🎯
คำถามที่พบบ่อย
บทเรียน “การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Mojo Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout”
เปิดให้ฟังก์ชันเปลี่ยนค่าของผู้เรียก คุณปฏิบัติ Mojo Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Mojo Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Mojo Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Mojo Academy นี้ได้ไหม
ได้ บทเรียน Mojo Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การยืมอาร์กิวเมนต์แบบอ่านอย่างเดียว
- การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout
- การรับความเป็นเจ้าของด้วย owned
- ตัวดำเนินการโอนค่า