Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

นั่งแกะ code จาก vdo เรื่อง Introduction to Kotlin จากงาน Google I/O 2017

$
0
0

จาก VDO เรื่อง Introduction to Kotlin ของงาน Google I/O 2017 เป็น session ที่แนะนำให้รู้จักภาษา Kotlin เป็น session ที่เขียน code กันสด ๆ ให้ดูกัน ว่าภาษา Kotlin มีความสามารถอะไรบ้าง ว่าภาษา Kotlin ช่วยลดจำนวน code ที่ต้องเขียนลงเยอะไหม ปิดท้ายด้วย Coroutine นิดหน่อย ดังนั้นจึงทำการนั่งแกะ code ใน VDO ออกมาหน่อย เพื่อศึกษาและดูว่ามีการแนะนำความสามารถอะไรของภาษา Kotlin บ้าง มาเริ่มกันเลย

1. เริ่มด้วย Data class กันเลย

ไม่ต้องมาเขียน setter/getter method ใน POJO รวมทั้ง method equals(), hashCode() และ toString() อีกต่อไป ตัวอย่าง code และการใช้งาน เป็นดังนี้ [gist id="0a4262751699d6f9623d741c85147417" file="1.kt"] แต่สิ่งที่สนใจมาก ๆ คือ เครื่องหมายไม่เท่ากัน ใน IntelliJ IDEA มันสวยมาก ๆ แสดงดังรูป จึงเกิดคำถามกับตัวเองว่า คืออะไร ? ดังนั้นจึงไปค้นหาพบว่ามันคือ Fira Code ต้องทำการเปิด feature นี้ใน preference ของ IDE เลือก Enable font ligatures และ Primary font เป็น Fira Code ดังรูป เพียงเท่านี้ก็สามารถแสดง operation ใน Equality หรือการเปรียบเทียบข้อมูลได้แล้ว แสดงตัวอย่างดังนี้ เพียงเท่านี้ก็สวยแล้ว ส่วน code จริง ๆ ก็เป็นเหมือนเดิมคือ !=, !==, == และ === นั่นเอง

2. ว่าด้วยเรื่องของการสร้าง function/method

ซึ่งทุก ๆ function/method ของ Kotlin ที่ไม่ใส่ return type ไปนั้น ไม่ใช่ void นะแต่เป็น Unit สามารถกำหนดค่า default ของ parameter ได้เลย ดังนั้นผู้เรียกใช้ function/method นี้ไม่ต้องส่งมาก็ได้ ยังไม่พอ เรียกใช้งานผ่าน Named parameter ซึ่งสลับตำแหน่งได้อีก ดังนี้ [gist id="0a4262751699d6f9623d741c85147417" file="2.kt"] มีอีกนิดนึงคือ ถ้า function/method มีเพียงบรรทัดเดียวและ return ข้อมูล สามารถใช้งาน expression body ได้เลย (Single expression function) [gist id="0a4262751699d6f9623d741c85147417" file="3.kt"] ซึ่งใน IntelliJ IDEA มีการแปลงให้อีกด้วย

3. ดูการใช้งาน Single expression function กับ When expression แบบสวย ๆ

ต้องการสร้าง function/method สำหรับแปลงค่าเงินเป็นสกุล Dollar ขึ้นมา สามารถเขียนด้วยการใช้ when ได้ดังนี้ สิ่งที่ชอบคือ ขั้นตอนการ refactor code ซึ่งมี 3 ขั้นตอนดังนี้ [gist id="0a4262751699d6f9623d741c85147417" file="4.kt"]

4. ว่าด้วยเรื่องของ Extension function

สามารถเพิ่มความสามารถใหม่ ๆ ได้ตามที่ต้องการ นั่นคือ extension function นั้นเอง ซึ่งหลาย ๆ ภาษาก็ทำได้ เช่นภาษา Swift เป็นต้น ตัวอย่าง code เป็นดังนี้ ซึ่งสร้าง function ใหม่ชื่อว่า percent และ percentOf [gist id="0a4262751699d6f9623d741c85147417" file="5.kt"] ยังไม่พอนะ ยังมี infix notation ให้ใช้อีกด้วย โดยทำการใส่ keyword infix ไปหน้า function จะทำให้ code ดูสวยงามมากยิ่งขึ้น ตัวอย่างเช่น [gist id="0a4262751699d6f9623d741c85147417" file="6.kt"]

5. ต่อด้วยเรื่อง Extension property

จาก code ตัวอย่างนั้นพบว่าการสร้าง BigDeciaml มันเหนื่อยมากหรือสร้างยากนั่นเอง มีทางในการสร้างที่ดีกว่าหรือไม่ ? แน่นอนว่า ทาง Kotlin ได้เตรียมวิธีการสร้างง่าย ๆ ไว้ให้ ตัวอย่างเช่น [gist id="0a4262751699d6f9623d741c85147417" file="7.kt"]

6. เรื่องของการสร้าง Data Type class ด้วย sealed class

ตัวอย่างเป็นการสร้าง data class สำหรับ return ผลการทำงานของส่วนต่าง ๆ ออกมา ซึ่งตัวอย่างคือ UserResult ประกอบไปด้วย Success และ Failure เขียน code ได้ดังนี้ [gist id="0a4262751699d6f9623d741c85147417" file="8.kt"] โดยในการใช้งานเรียกว่า Smart cast จะสังเกตุว่าใช้ผ่าน keyword is ซึ่ง compiler จะทำการ cast type ของ Result ให้แบบอัตโนมัติ แสดงดังนี้ ขอให้สนุกกับการ coding

Viewing all articles
Browse latest Browse all 1997

Trending Articles