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

ฟังก์ชันและแลมบ์ดา

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

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

ทำไมต้องใช้ฟังก์ชัน

ฟังก์ชันช่วยให้คุณเขียนชุดคำสั่งเพียงครั้งเดียวแล้วนำกลับมาใช้ที่ใดก็ได้

  • ลดการเขียนโค้ดซ้ำ
  • ทำให้โค้ดอ่านและทดสอบได้ง่ายขึ้น
  • แบ่งปัญหาใหญ่เป็นส่วนย่อย ๆ

ใน Kotlin ฟังก์ชันเป็นสิ่งระดับแรก คุณจึงเก็บฟังก์ชันไว้ในตัวแปรและส่งต่อไปมาได้

ไวยากรณ์ฟังก์ชันพื้นฐาน

ฟังก์ชันของ Kotlin ใช้คีย์เวิร์ด fun:

fun greet(name: String): String {
    return "Hello, $name!"
}

fun main() {
    val msg = greet("Alice")
    println(msg)  // Hello, Alice!

    println(greet("Bob"))  // Hello, Bob!
}

ฟังก์ชันนิพจน์เดียว

เมื่อส่วนตัวของฟังก์ชันเป็นนิพจน์เดียว คุณสามารถใช้ = และไม่ต้องเขียนวงเล็บปีกกากับ return:

fun square(n: Int): Int = n * n

fun add(a: Int, b: Int) = a + b  // type inferred

fun main() {
    println(square(5))   // 25
    println(add(3, 7))   // 10
}

อาร์กิวเมนต์ค่าเริ่มต้นและอาร์กิวเมนต์แบบระบุชื่อ

ฟังก์ชันของ Kotlin รองรับค่าพารามิเตอร์เริ่มต้น จึงไม่จำเป็นต้องเขียนฟังก์ชันหลายรูปแบบ:

  • ค่าเริ่มต้น: fun greet(name: String = "World")
  • ระบุชื่อ: เรียกใช้ด้วย greet(name = "Alice") เพื่อไม่ต้องระบุตามลำดับตำแหน่ง

การใช้ค่าเริ่มต้นและการระบุชื่อ

อาร์กิวเมนต์ค่าเริ่มต้นช่วยให้ส่วนเชื่อมต่อของโค้ดสะอาดและเป็นระเบียบ:

fun buildProfile(
    name: String,
    age: Int = 0,
    role: String = "User"
): String {
    return "$name | age=$age | $role"
}

fun main() {
    println(buildProfile("Alice"))
    println(buildProfile("Bob", age = 30))
    println(buildProfile("Carol", 25, "Admin"))
}

แลมบ์ดาคืออะไร

แลมบ์ดา คือฟังก์ชันนิรนาม หรือฟังก์ชันที่ไม่มีชื่อ

  • ไวยากรณ์: { params -> body }
  • เก็บไว้ในตัวแปร: val double = { x: Int -> x * 2 }
  • ส่งให้ฟังก์ชันอื่นเป็นอาร์กิวเมนต์ได้

แลมบ์ดาพบได้ทั่วไปใน Android เช่น ตัวรับฟังการคลิก การแปลงรายการ และโครูทีน

ตัวอย่างแลมบ์ดา

เก็บและเรียกใช้แลมบ์ดาได้เช่นเดียวกับฟังก์ชันทั่วไป:

fun main() {
    val double = { x: Int -> x * 2 }
    println(double(4))   // 8

    val add = { a: Int, b: Int -> a + b }
    println(add(3, 5))   // 8

    // Lambda with no params
    val sayHi = { println("Hi!") }
    sayHi()              // Hi!
}

ฟังก์ชันลำดับสูง

ฟังก์ชันลำดับสูง คือฟังก์ชันที่รับฟังก์ชันอื่นเป็นพารามิเตอร์หรือส่งคืนฟังก์ชัน

คลังมาตรฐานของ Kotlin มีฟังก์ชันประเภทนี้อยู่มากมาย เช่น filter, map, forEach

ไวยากรณ์แลมบ์ดาท้ายสุด: เมื่ออาร์กิวเมนต์สุดท้ายเป็นแลมบ์ดา ให้ย้ายแลมบ์ดานั้นออกมานอกวงเล็บ

ไวยากรณ์แลมบ์ดาท้ายสุด

ส่งแลมบ์ดาเป็นอาร์กิวเมนต์สุดท้ายโดยวางไว้นอกวงเล็บ:

fun applyTwice(n: Int, operation: (Int) -> Int): Int {
    return operation(operation(n))
}

fun main() {
    val result = applyTwice(3) { x -> x * 2 }
    println(result)  // 12  (3 * 2 = 6, 6 * 2 = 12)

    // 'it' is the implicit single parameter
    val doubled = applyTwice(5) { it + it }
    println(doubled) // 20
}

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

ลองดูโค้ดนี้ โค้ดจะพิมพ์อะไรออกมา

val triple = { x: Int -> x * 3 }
println(triple(4))

สรุป: ฟังก์ชันและแลมบ์ดา

คุณได้เรียนรู้แล้วว่า:

  • fun ใช้กำหนดฟังก์ชันพร้อมพารามิเตอร์และชนิดข้อมูลที่ส่งคืน
  • ฟังก์ชันนิพจน์เดียวใช้รูปแบบย่อด้วย =
  • อาร์กิวเมนต์ค่าเริ่มต้นและแบบระบุชื่อช่วยแทนที่ฟังก์ชันหลายรูปแบบ
  • แลมบ์ดาคือฟังก์ชันนิรนาม: { params -> body }
  • ฟังก์ชันลำดับสูงรับฟังก์ชันเป็นพารามิเตอร์

ถัดไป: ควบคุมลำดับการทำงานของโปรแกรมด้วยเงื่อนไขและลูป

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

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

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

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

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

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

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

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

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

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

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

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

  1. ตัวแปรและชนิดข้อมูล
  2. ฟังก์ชันและแลมบ์ดา
  3. การควบคุมลำดับการทำงาน
← กลับไปที่ Android Academy