Kotlin @ Pronto
uuunaja
Posted on September 10, 2019
มาเล่าอีกแล้ว รอบนี้ เราไปงาน Workshop Kotlin มา งานนี้ Ookbee เป็น sponsor ใหญ่ญ่ญ่ญ่ ได้ยินเค้าบอกว่าเป็นระดับ gold diamon ฟังๆแล้วอย่างกะขายตรงมาหา downline อ่านแล้วทำเสียงกล้องในหัวด้วยนะ จริงๆวันนี้น้องที่ออฟฟิศสองคนต้องมา แต่โดนเท T.T น้อยใจ คนนึงป่วยอีกคนติดธุร เราติดธุระตอนเช้า กว่าจะไปถึงถนนรัชดาเส้นที่เลี้ยวสายปิดอ้อมแล้วอ้อมอีก บ่นอีกและ skip… เรา เริ่มเลยดีกว่า assume ว่าทุกคนอ่านโปรแกรมเป็นกันหมดแล้วละกัน ใครเขียนไม่เป็นอ่านไปก็ไม่รู้เรื่องเราแนะนำกดปิดไปเลย feature เผือกทำงานไถลลงไปอ่านต่อได้เลยฮะ
Session 1 : Air from Agoda
เรามาถึงก็ใกล้จบ session แล้วแต่แอบกลับไปอ่านใน Slide ให้
เริ่มจากการประกาศตัวแปร var/val
Java Syntax เวลาเราจะสร้างตัวแปรไว้เก็บค่าสักตัวก็จะเขียนประมาณนี้ใช่มะ
private String name = “Hello World”;
Love people = new Love();
จากนี้ไม่ต้องประกาศให้มันยุ่งยากแล้วหรือเราจะบอก type อยู่ก็ได้
var name: String = “Hello World”
var name = “HelloWorld”
var people = Love()
จบนะวิธีประกาศตัวแปรสั้นๆง่ายๆ เดี๋ยวยัง.. มีเพิ่มเติม ถ้าอยากให้มันแก้ไขไม่ได้ของ Java เราจะใช้ final ใช่มะเพื่อทำให้มันเป็น immutable
final String name = “Hello World”;
เราจะแก้ไข name เป็นอย่างอื่นไม่ได้ Kotlin ใช้
val name : String = “Hello World”;
lateinit ตรงตัวใส่ข้อมูลที่หลัง
class TestNaja{
var person : Person
}
พังแน่นอนข้อดีของ Kotlin คือเราจะดีลกับ Null PointerException ที่น้อยลง
แก้โดยการใช้ lateinit
class TestNaja{
lateinit var person : Person
@SetUp fun setup(){
person = Person()
}
}
ในส่วนนี้เราไม่รู้ทำไม Setup ถึงหน้าไม่เจอใน ide เรา
lazy not easy
ยังไม่เข้าใจ concept เท่าไหร่ แต่เท่าที่อ่านที่ฟังมา หมายถึงฟังถ้ายังไม่มีการเรียกใช้มันจะไม่ทำงานเค้ายกตัวอย่างแบบนี้
class Test{
val database by lazy { Database()
}
fun saveToDatabase(name: Person) { database.save(name)
……
}
}
คือ database จะไม่ถูก create จนกว่าจะมีการเรียก saveToDatabase
Nullable type null ได้ ข้ามไม่ได้
อย่างที่บอก Kotlin ค่อยเตือนเรื่อง null ให้เราเสมอแต่ถ้าเราอยากจะเล่นกับ null เราสามารถใส่เครื่องหมาย ? หรือเรียกว่าเครื่องหมายเอลวิสก็ได้ ให้ตัวแปรนั้นได้ เช่น
var x: String = “Hello”
x = null < compiler จะไม่ยอมให้ค่านี้เป็น null เด็ดขาด เราเลยต้องแก้ใส่ ? ให้มัน
var x: String? = “Hello”
Session 2 : Dew from Yesmom
เข้ามาสอนแปลง code จาก java มาเป็น Kotlin รู้สึกชอบนะการอธิบายดูซอฟดี
เริ่มมาเค้าให้ clone project ลงมาก่อนซึ่งใน project จะแบ่งเป็น 2 Activity หลัก เป็นหน้า List ของข้อมูล ส่วนอีกหน้าเป็น Detail ของข้อมูลนั้นๆ
ต่อมาก็สอนวิธีแปลง class จาก java ไป Kotlin หลังจากนั้นก็อธิบายถึง Kotline REPL เป็น short cut ไว้เขียน test program สั้นๆ ดีจังไม่ต้องไปนั่งสร้าง class test ละ เสร็จเค้าก็เล่า List vs Mutable ซึ่ง list ธรรดามาจะแก้ไขอะไรไม่ได้ แต่ถ้าเป็น mutable list เราจะสามารถแก้ไขข้อมูลได้
function ลอยๆไม่ต้องคอยใคร ข้อดีของ Kotlin อีกอย่างคือเราสามารถสร้าง function นอก class ได้ ก็คือพิมพ์ขึ้นมาลอยๆได้เลย!!
แล้วก็สอน Apply กับ Lambda ต่อ
Apply function เอาไว้แก้ไขการเรียก ชื่อ object ซ้ำกันยกตัวอย่างให้ดู
เช่นถ้าเราจะเขียนว่า
TextView textView = new TextView(context);
textView.setText(“Hello”);
textView.setColor(Color.RED);
textView.setTextSize(18);
เขียนอะไรยืดยาวอะไรเถือกนี้ เรามาแก้เป็น Kotlin ดีกว่าโดย
var textView = TextView(context)
textView.apply{
setText(“Hello”)
setColor(Color.RED)
setTextSize(18)
}
แหนะสั้นลงมั้ยหละ ก็คือบอก object นั้น .apply ได้เลยหลังจากนั้นใน block {…} จะมี textView. ให้แบบเรามองไม่เห็นอยู่หรือเรียกอีกอย่างว่าด้านใน block จะก้าวถึงตัว object นี้ทั้งหมด
ต่อมา Lambda หน้าตาแบบนี้ -> เหมือน java 8 เด๊ะเลย มันสามารถสร้าง anonymus funciton ได้
Session 3 : POP from Shopspot , Ju from Agoda
session นี้เค้าพูดเร็วไปบวกกับเราหาที่ clone โปรเจ็คไม่ได้เลยนั่งฟังเอาอย่างเดียว
ในแง่ของ block ที่ให้อ้างอิงถึงตัวแปรสั้นๆแบบ apply จริงๆมันจะมีอีกสามแบบ
Apply,Also,With
โดนที่วิธีเรียกต่างกันนิดหน่อยคือ
Also ใช้ it แทนตัว object เช่น
var textView : TextView(context)
textView.also{
it.setText(“Hello”)
}
with โยนตัวที่จะอ้างถึงให้มัน
with(textView){
it.setText(“Hello”)
}
ต่อมาเค้าก็ให้ทำ แก้โจทย์ที่เค้าสร้างไว้ เราไม่มี code เลยนั่งดูอย่างเดียว
Session 4 : Christopher Ng at Genxas
มาเล่าถึง ว่า Kotlin มันแปลงได้หลายภาษา แล้วก็เอา code มารันใส่ IOS ให้ดู!!!
อันที่จริง Syntax ของ Kotlin ก็ใกล้เคียง IOS เอามากๆอยู่นะ อนาคตเราคงเขียน Kotlin รันมัน 2 platform เลยแต่ที่แน่ๆจากที่เห็นเค้าทำเราอาจจะเอา logic ของฝั่ง ios มาใช้บน androidได้แหละฮีๆ
ต่อมาเค้าก็เล่าถึง Kolin บน java script
ในความเห็นส่วนตัวเราว่า ยังไงถ้าทำฝั่งเวปน่าจะเสร็จ C# ของ microsoft เราเลยรู้เฉยๆ แต่ที่ชอบคือ รันใส่ IOS เนี่ยแหละ 5555
จบจำได้แค่นี้ แต่ที่ดูอนาคต kotlin น่าจะแทนที่ java ของ android แน่ๆเตรียมตัวกันไว้ก็ดี
Posted on September 10, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.