0Pricing
Mojo Academy · บทเรียน

การเปลี่ยนค่าในตำแหน่งเดิมด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การยืมอาร์กิวเมนต์แบบอ่านอย่างเดียว
  2. การเปลี่ยนค่าในตำแหน่งเดิมด้วย inout
  3. การรับความเป็นเจ้าของด้วย owned
  4. ตัวดำเนินการโอนค่า
← กลับไปที่ Mojo Academy