Dart Academy · บทเรียน

ฟังก์ชันลำดับสูงและการทำเคอร์รี

ส่งคืนและประยุกต์ใช้ฟังก์ชันบางส่วน

บทเรียน 1 จาก 413 ขั้นตอน

ฟังก์ชันลำดับสูงและการทำเคอร์รี เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

ฟังก์ชันคือค่า

ใน Dart ฟังก์ชันก็เป็นเพียงค่าชนิดหนึ่งที่คุณเก็บไว้ในตัวแปรได้ แนวคิดเดียวนี้เปิดทางสู่ รูปแบบการเขียนโปรแกรมเชิงฟังก์ชันทั้งหมด 🎯

int square(int x) => x * x;
var op = square;
print(op(4)); // 16

ความหมายของฟังก์ชันลำดับสูง

ฟังก์ชันลำดับสูงคือฟังก์ชันที่รับฟังก์ชันเป็นอาร์กิวเมนต์ หรือส่งคืนฟังก์ชัน คุณเคยใช้ฟังก์ชันเหล่านี้กับเมธอดของรายการมาแล้ว

ส่งฟังก์ชันเข้าไป

เมื่อคุณส่งพฤติกรรมเป็นอาร์กิวเมนต์ ผู้เรียกจะเป็นผู้กำหนดว่าจะเกิดอะไรขึ้น ในที่นี้ apply จะเรียกใช้ฟังก์ชันใดก็ตามที่ได้รับมา

int apply(int v, int Function(int) f) => f(v);
print(apply(5, (x) => x + 1)); // 6

รูปแบบชนิดของฟังก์ชัน

ชนิด int Function(int) อ่านได้ว่าเป็นฟังก์ชันที่รับค่า int และส่งคืนค่า int การระบุชนิดทำให้เจตนาของคุณชัดเจนอย่างยิ่ง

void run(String Function(String) format) {
  print(format('hi'));
}

ส่งคืนฟังก์ชัน

ฟังก์ชันลำดับสูงสามารถ ส่งคืนฟังก์ชันได้เช่นกัน ฟังก์ชันที่ส่งคืนนี้จะจดจำค่ารอบตัวไว้ตั้งแต่ตอนที่ถูกสร้าง

Function makeAdder(int n) {
  return (int x) => x + n;
}

ใช้ฟังก์ชันที่ส่งคืนมา

เรียกตัวสร้างหนึ่งครั้งเพื่อสร้างฟังก์ชันเฉพาะทาง แล้วนำกลับมาใช้ซ้ำ ผลลัพธ์แต่ละรายการจะเป็นเครื่องมือ ที่กำหนดค่าไว้ขนาดเล็กของตัวเอง

var add10 = makeAdder(10);
print(add10(5)); // 15
print(add10(1)); // 11

ทำความรู้จัก Currying

Currying เปลี่ยนฟังก์ชันที่มีหลายอาร์กิวเมนต์ให้เป็นสายของฟังก์ชันที่รับอาร์กิวเมนต์ทีละตัว คุณส่งค่าเข้าไปทีละค่า

int Function(int) add(int a) => (int b) => a + b;
print(add(3)(4)); // 7

การประยุกต์ใช้บางส่วน

กำหนดอาร์กิวเมนต์แรกตอนนี้ แล้วค่อยกำหนดส่วนที่เหลือภายหลัง นี่คือ การประยุกต์ใช้บางส่วน ซึ่งช่วยสร้างตัวช่วยที่นำกลับมาใช้ซ้ำและเตรียมค่าไว้ล่วงหน้า

var add3 = add(3);
print(add3(10)); // 13
print(add3(20)); // 23

ทำไมต้องใช้ Currying

Currying ช่วยให้คุณสร้างฟังก์ชันเฉพาะทางจากฟังก์ชันทั่วไปได้โดยไม่ต้องเขียนตรรกะใหม่ เหมาะอย่างยิ่งเมื่อต้องประกอบ ลำดับการประมวลผลขนาดเล็ก

ชนิดพารามิเตอร์ฟังก์ชัน

คุณสามารถตั้งชื่อชนิดฟังก์ชันที่ซับซ้อนด้วย typedef เพื่อให้ลายเซ็นอ่านง่ายตลอดทั้งโค้ด

typedef IntOp = int Function(int);
int apply(int v, IntOp f) => f(v);

ทางลัดแบบ tear-off

แทนที่จะห่อเมธอดไว้ใน lambda ให้ส่งชื่อเมธอดโดยตรง วิธี tear-off นี้ทำให้การเรียกใช้งานสะอาดและเป็นระเบียบ

['1', '2', '3'].map(int.parse).forEach(print);

ตรวจสอบอย่างรวดเร็ว

มาทดสอบความเข้าใจของคุณเกี่ยวกับฟังก์ชันลำดับสูงกัน

ทบทวน

ฟังก์ชันคือค่า คุณจึงส่งต่อและส่งคืนฟังก์ชันได้ Currying และการประยุกต์ใช้บางส่วนช่วยเปลี่ยนฟังก์ชันทั่วไปให้เป็นเครื่องมือเฉพาะทาง ทำได้ดีมาก 🚀

เริ่มต้นได้ฟรี

เรียนรู้ Dart ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “ฟังก์ชันลำดับสูงและการทำเคอร์รี” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ฟังก์ชันลำดับสูงและการทำเคอร์รี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันลำดับสูงและการทำเคอร์รี”

ส่งคืนและประยุกต์ใช้ฟังก์ชันบางส่วน คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ฟังก์ชันลำดับสูงและการทำเคอร์รี” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม

ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. ฟังก์ชันลำดับสูงและการทำเคอร์รี
  2. fold, reduce และการขยาย
  3. ตัววนซ้ำแบบขี้เกียจและตัวสร้างด้วย sync*
  4. การประกอบสายส่งผ่านฟังก์ชันบริสุทธิ์
← กลับไปที่ Dart Academy