Kotlin Academy · บทเรียน

ส่วนขยายเชิงปฏิบัติ: ตัวช่วย Context, View และ String

สร้างส่วนขยายตัวช่วยแบบ Android ที่ใช้ได้จริงสำหรับรูปแบบทั่วไป

บทเรียน 4 จาก 414 ขั้นตอน

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

ส่วนขยายในสถานการณ์จริง

ส่วนขยายมีประโยชน์อย่างมากกับประเภทจากเฟรมเวิร์กที่คุณแก้ไขไม่ได้ เช่น Context, View, String และคอลเลกชัน ด้านล่างคือตัวอย่างรูปแบบที่ใช้ได้จริงจากฐานโค้ดแอนดรอยด์ที่ใช้งานจริง

ตัวช่วย Context.toast

ห่อ Toast.makeText(...).show() ที่มีรายละเอียดมากให้เป็นส่วนขยายแบบบรรทัดเดียว

import android.content.Context
import android.widget.Toast
fun Context.toast(message: String, long: Boolean = false) {
    val duration = if (long) Toast.LENGTH_LONG else Toast.LENGTH_SHORT
    Toast.makeText(this, message, duration).show()
}
// Usage: context.toast("Saved!")

ตัวช่วยด้านทรัพยากรของ Context

หลีกเลี่ยงการแปลงชนิดเมื่อค้นหาทรัพยากร ส่วนขยายช่วยให้โค้ดอ่านง่ายและมีความปลอดภัยด้านชนิดข้อมูลมากขึ้น

import android.content.Context
import androidx.core.content.ContextCompat
fun Context.color(res: Int) = ContextCompat.getColor(this, res)
fun Context.string(res: Int) = getString(res)
fun Context.dp(value: Int) = (value * resources.displayMetrics.density).toInt()
// Usage: val red = context.color(R.color.error)

View.show / View.hide

สลับระหว่าง View.VISIBLE และ View.GONE ได้โดยไม่ต้องเขียนโค้ดยุ่งยาก

import android.view.View
fun View.show() { visibility = View.VISIBLE }
fun View.hide() { visibility = View.GONE }
fun View.invisible() { visibility = View.INVISIBLE }
// Usage: progressBar.show(); button.hide()

View.setVisible(บูลีน)

คำสั่งแบบบรรทัดเดียวที่สลับการแสดงผลตามเงื่อนไข — ใช้แทนโค้ดการแสดงผลแบบ if-else

import android.view.View
fun View.setVisible(visible: Boolean) {
    visibility = if (visible) View.VISIBLE else View.GONE
}
// Usage: errorLabel.setVisible(state.hasError)

แลมบ์ดา View.onClick

ตัวฟังการคลิกที่อ่านง่ายขึ้น — ส่งแลมบ์ดาแทน OnClickListener แบบไม่ระบุชื่อ

import android.view.View
fun View.onClick(action: (View) -> Unit) {
    setOnClickListener(action)
}
// Usage:
// button.onClick { view -> println("clicked") }

String.isValidEmail

ส่วนขยายสำหรับการตรวจสอบตามโดเมนธุรกิจบน String ช่วยให้ตรรกะทางธุรกิจอ่านเข้าใจง่าย

fun String.isValidEmail(): Boolean {
    val regex = Regex("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$")
    return regex.matches(this)
}
fun main() {
    println("ada@example.com".isValidEmail()) // true
    println("nope".isValidEmail())             // false
}

String.truncate

ตัดสตริงที่ยาวให้สั้นลงด้วยจุดไข่ปลา — ตัวช่วยส่วนติดต่อผู้ใช้ที่พบได้บ่อย

fun String.truncate(max: Int, ellipsis: String = "..."): String =
    if (length <= max) this else substring(0, max - ellipsis.length) + ellipsis
fun main() {
    println("The quick brown fox".truncate(10)) // The qui...
    println("short".truncate(10))                // short
}

String.toTitleCase

ทำให้คำแต่ละคำขึ้นต้นด้วยตัวพิมพ์ใหญ่ — ตัวช่วยจัดรูปแบบที่ใช้กันทั่วไป

fun String.toTitleCase(): String = split(" ").joinToString(" ") {
    if (it.isEmpty()) it
    else it[0].uppercaseChar() + it.substring(1).lowercase()
}
fun main() {
    println("hello WORLD from kotlin".toTitleCase())
}

ส่วนขยายรายการ: chunkedBy

จัดกลุ่มสมาชิกที่อยู่ติดกันตามคีย์ — มีประโยชน์สำหรับส่วนต่าง ๆ ของส่วนติดต่อผู้ใช้

fun <T, K> List<T>.chunkedBy(keySelector: (T) -> K): List<List<T>> {
    val result = mutableListOf<MutableList<T>>()
    var lastKey: K? = null
    for (item in this) {
        val key = keySelector(item)
        if (key == lastKey) result.last().add(item)
        else { result.add(mutableListOf(item)); lastKey = key }
    }
    return result
}
fun main() {
    val data = listOf(1, 1, 2, 2, 2, 3, 1)
    println(data.chunkedBy { it }) // [[1, 1], [2, 2, 2], [3], [1]]
}

ตัวช่วยสำหรับแอ็กทิวิตี

ทำให้การนำทางมีความปลอดภัยด้านชนิดข้อมูลและสั้นลงด้วยเจเนอริกแบบระบุชนิดจริง

import android.content.Context
import android.content.Intent
inline fun <reified T> Context.startActivity() {
    startActivity(Intent(this, T::class.java))
}
// Usage: context.startActivity<MainActivity>()

อย่าใช้มากเกินไป

ส่วนขยายจะเพิ่มชื่อเข้าไปในเนมสเปซส่วนกลาง ควรทำให้มีขอบเขตชัดเจน (private/internal) และจัดกลุ่มตามโดเมน (การแยกหนึ่งไฟล์ต่อประเภทตัวรับใช้ได้ดี)

fun String.shout() = uppercase() + "!"
fun String.whisper() = lowercase() + "..."
fun main() {
    println("hello".shout())
    println("HELLO".whisper())
}

ตรวจสอบความเข้าใจอย่างรวดเร็ว

เหตุใดส่วนขยายจึงเหมาะอย่างยิ่งกับประเภทจากเฟรมเวิร์กแอนดรอยด์ เช่น Context หรือ View

สรุปทบทวน

ส่วนขยายเหมาะอย่างยิ่งสำหรับเพิ่มตัวช่วยที่ใช้งานสะดวกให้กับประเภทจากเฟรมเวิร์ก (Context, View, String และรายการ) รูปแบบที่พบบ่อย ได้แก่ การสลับการมองเห็น ตัวฟังการคลิก การค้นหาทรัพยากร การตรวจสอบ และการจัดรูปแบบ ควรทำให้ส่วนขยายมีจุดประสงค์ชัดเจน มีขอบเขต และจัดกลุ่มตามประเภทตัวรับ

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

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

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

คอร์ส
51
บทเรียน
203

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

บทเรียน “ส่วนขยายเชิงปฏิบัติ: ตัวช่วย Context, View และ String” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ส่วนขยายเชิงปฏิบัติ: ตัวช่วย Context, View และ String”

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

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

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

บทเรียน “ส่วนขยายเชิงปฏิบัติ: ตัวช่วย Context, View และ String” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ฟังก์ชันส่วนขยาย: ไวยากรณ์และกฎการเลือกใช้
  2. พร็อพเพอร์ตีส่วนขยายและส่วนขยายแบบคำนวณค่า
  3. ส่วนขยายตามขอบเขตและส่วนขยายของ Companion
  4. ส่วนขยายเชิงปฏิบัติ: ตัวช่วย Context, View และ String
← กลับไปที่ Kotlin Academy