let และ run: แปลงค่าและกำหนดขอบเขต
ใช้ let สำหรับการแปลงค่าอย่างปลอดภัยกับ null และใช้ run สำหรับการคำนวณเฉพาะที่
let และ run: แปลงค่าและกำหนดขอบเขต เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
let และ run
let ใช้ it เป็นตัวรับ ส่วน run ใช้ this ทั้งสองฟังก์ชันส่งคืนนิพจน์สุดท้ายของแลมบ์ดา เลือกใช้ตามว่าคุณต้องการอ้างอิงอย่างชัดเจนหรือไม่
พื้นฐานของ let
let ส่งตัวรับให้แลมบ์ดาในชื่อ it มีประโยชน์สำหรับการแปลงค่า หรือจำกัดขอบเขตของตัวแปร
fun main() {
val length = "Kotlin".let { it.length }
println(length) // 6
}let กับค่าที่อาจเป็น null
รูปแบบที่ใช้กันทั่วไปคือ obj?.let { ... } ซึ่งจะเรียกใช้บล็อกเฉพาะเมื่อ obj ไม่ใช่ null
fun main() {
val name: String? = "Ada"
val upper = name?.let { it.uppercase() } ?: "(unknown)"
println(upper) // ADA
}ใช้ let เพื่อแปลงค่า
ใช้ let เพื่อแปลงค่าโดยยังคงทำให้เชนอ่านได้ง่าย
fun main() {
val numStr = "42"
val doubled = numStr.let { it.toInt() }.let { it * 2 }
println(doubled) // 84
}ใช้ let เพื่อจำกัดขอบเขต
จำกัดการมองเห็นของตัวแปรให้อยู่ในบล็อกขนาดเล็ก เป็นวิธีที่สะอาดในการหลีกเลี่ยงการทำให้เนมสเปซปะปนกัน
fun main() {
val username = readUserConfig().let { config ->
config.uppercase()
}
println(username)
}
fun readUserConfig() = "ada"พื้นฐานของ run
run ทำงานคล้ายกับ let แต่ใช้ this แทน it มีประโยชน์เมื่อคุณต้องการเรียกใช้สมาชิกหลายรายการของตัวรับ
class Rect(val w: Int, val h: Int) {
fun area() = w * h
fun perimeter() = 2 * (w + h)
}
fun main() {
val description = Rect(3, 4).run {
"area=${area()}, perimeter=${perimeter()}"
}
println(description)
}ใช้ run เป็นบล็อกแบบอิสระ
run { ... } (ไม่มีตัวรับ) จะเรียกใช้บล็อกและส่งคืนผลลัพธ์ของบล็อก เหมาะสำหรับจัดกลุ่มการคำนวณ
fun main() {
val result = run {
val a = 10
val b = 20
a + b
}
println(result) // 30
}เปรียบเทียบ let กับ run ตามรูปแบบตัวรับ
หากเนื้อหาของแลมบ์ดาเข้าถึงสมาชิกหลายรายการของตัวรับ run จะช่วยให้ไม่ต้องเขียน it. หากใช้ตัวรับเพียงหนึ่งหรือสองครั้ง let จะอ่านได้กระชับกว่า
class User(val name: String, val email: String, val age: Int)
fun main() {
val user = User("Ada", "ada@x.io", 35)
// run: this-style
val s1 = user.run { "$name <$email> age $age" }
// let: it-style
val s2 = user.let { "${it.name} <${it.email}> age ${it.age}" }
println(s1); println(s2)
}การใช้ let ร่วมกับ Elvis
การใช้ ?.let { ... } ร่วมกับ ?: เป็นรูปแบบสายการประมวลผลที่ทรงพลังและปลอดภัยต่อค่า null
fun main() {
val raw: String? = " hello "
val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
println(cleaned) // HELLO
}ใช้ run กับการกำหนดค่าและผลลัพธ์
รวมการตั้งค่า (ผ่าน this) เข้ากับค่าที่ส่งคืนภายในบล็อกเดียว
class Connection {
var host: String = ""
fun connect() = "connected to $host"
}
fun main() {
val status = Connection().run {
host = "localhost"
connect()
}
println(status)
}รูปแบบที่ควรหลีกเลี่ยง: ใช้ let มากเกินไป
อย่าครอบการตรวจสอบค่า null แบบง่ายด้วย let หากใช้ if แล้วอ่านเข้าใจได้ชัดเจนกว่า ควรใช้ฟังก์ชันกำหนดขอบเขตเมื่อฟังก์ชันเหล่านั้นช่วยให้งานดีขึ้นจริง
fun main() {
val name: String? = "Ada"
// OK
name?.let { println(it.length) }
// Equivalent and clearer for trivial cases:
if (name != null) println(name.length)
}ตรวจสอบอย่างรวดเร็ว
ฟังก์ชันกำหนดขอบเขตใดส่งตัวรับให้แลมบ์ดาในชื่อ it และส่งคืนผลลัพธ์ของแลมบ์ดา
ทบทวน
let ใช้ it และส่งคืนผลลัพธ์ของแลมบ์ดา เหมาะอย่างยิ่งสำหรับการแปลงค่าอย่างปลอดภัยต่อ null และการจำกัดขอบเขต ส่วน run ใช้ this และส่งคืนผลลัพธ์ของแลมบ์ดา เหมาะเมื่อคุณเรียกใช้สมาชิกหลายรายการของตัวรับ ทั้งสองฟังก์ชันเหมาะกับโค้ดรูปแบบนิพจน์
คำถามที่พบบ่อย
บทเรียน “let และ run: แปลงค่าและกำหนดขอบเขต” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “let และ run: แปลงค่าและกำหนดขอบเขต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “let และ run: แปลงค่าและกำหนดขอบเขต”
ใช้ let สำหรับการแปลงค่าอย่างปลอดภัยกับ null และใช้ run สำหรับการคำนวณเฉพาะที่ คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “let และ run: แปลงค่าและกำหนดขอบเขต” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- apply และ with: ตั้งค่าและส่งคืนค่า
- let และ run: แปลงค่าและกำหนดขอบเขต
- also: ผลข้างเคียงโดยไม่เปลี่ยนตัวรับ
- เลือกฟังก์ชันขอบเขตให้เหมาะสม: คู่มือการตัดสินใจ