ฟังก์ชันและแลมบ์ดา
กำหนดฟังก์ชันด้วยพารามิเตอร์และชนิดค่าที่ส่งกลับ ใช้อาร์กิวเมนต์เริ่มต้นและอาร์กิวเมนต์แบบระบุชื่อ และเขียนนิพจน์แลมบ์ดาที่กระชับ
ฟังก์ชันและแลมบ์ดา เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวแปรและชนิดข้อมูล
- ฟังก์ชันและแลมบ์ดา
- การควบคุมลำดับการทำงาน