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