5 สิ่งแตกต่าง ที่ Kotlin ดีกว่า Java (ของดีครับน้อนๆ)
แน่นอนว่าเราเป็น Android Kotlin Developer มานานพอสมควรแล้ว และพบว่าการเขียน Kotlin นั้นทำให้ชีวิตนักพัฒนาดีขึ้นมาก ทำงานได้อย่างมีความสุขมากขึ้น
และเนื่องด้วยทางทีม Android ยกภาษา Kotlin ให้เป็นภาษาโปรแกรมมิ่ง Official อีกภาษานึงในการพัฒนา Android Application และอัพเดต feature ใหม่ ๆ ทุกลมหายใจ ให้กับภาษา Kotlin ก่อนเสมอ คนให้คนใหม่ ๆ อยากใช้ Kotlin ไปอีก
แต่เนื่องด้วยความจำเป็นของนักพัฒนาบางท่าน ที่อาจจะยังไม่ได้ใช้ภาษา Kotlin ในการทำงาน ทางเราเลยหยิบ 5 สิ่งที่ภาษา Kotlin แตกต่างในทางที่ดีกว่า Java มาฝากนักพัฒนาทุกคนกันค่า มาเริ่มกันเลย
1) When: switch-case ในโลก Kotlin
ในการเขียนโปรแกรมเบื้องต้น เราจะได้เรียนการใช้ condition แบบต่าง ๆ ไม่ว่าจะเป็น if-else, switch-case
ซึ่งในภาษา Java จะไม่มี condition แบบ switch เราจึงใช้ if-else ซ้อนกันเยอะ ๆ แต่ในภาษา Kotlin มีสิ่งที่คล้าย switch case ก็คือ when นั่นเอง
ตัวอย่างง่าย ๆ เช่นโปรแกรมตัดเกรด สุดยอดนิยมที่หลาย ๆ คนต้องเจอตอนเขียนโปรแกรมใหม่ ๆ เนอะ เรามี condition การให้เกรดประมาณนี้
- A: >=80
- B: >=70
- C: >=60
- D: >=50
- ที่เหลือ F
ถ้าในภาษา Java เราต้องเเราต้องเขียน if-else ซ้อนกันหลาย ๆ ชั้น แบบนี้
public class Main {
public static void main(String[] args) {
int score = 85;
String grade;
if (score >= 80) {
grade = "A";
} else if (score >= 70) {
grade = "B";
} else if (score >= 60) {
grade = "C";
} else if (score >= 50) {
grade = "D";
} else {
grade = "F";
}
System.out.println(grade);
}
}
ส่วนภาษา Kotlin เราสามารถใช้ when ได้เลย มันจะคล้ายกับ switch-caseทำให้โค้ดของเรามีขนาดสั้นลง อ่านเข้าใจง่ายขึ้นอีกด้วยนะ
fun main() {
val score = 85
val grade = when {
score >= 80 -> "A"
score >= 70 -> "B"
score >= 60 -> "C"
score >= 50 -> "D"
else -> "F"
}
println(grade)
}
2) ไม่ต้องนับบวกให้เมื่อยมือ ใช้ string templates สิจ๊ะ
ก่อนหน้านี้เวลาเราเชื่อม string ต่าง ๆ เราจะต้องใช้เครื่องหมาย +
เพื่อเอาตัวแปรที่เราต้องการ มาเป็น string ที่เราต้องการ บางครั้งก็ยาวเอามาก ๆ เลย
public class Main
{
public static void main(String[] args) {
String name = "MikkiPastel";
int follower = 13000;
String result = "Hello " + name + ", you have " + follower + " followers";
System.out.println(result);
}
}
แต่ใน kotlin มี string templates สามารถใช้ ${variableName}
ใส่เข้าไปในค่า string ได้เลย ไม่ต้องบวกกันให้เสียเวลา
fun main() {
val name = "MikkiPastel"
val follower = 13000
println("Hello ${name}, you have ${follower} followers")
}
ปล. ในนี้ไม่ได้กล่าวถึงการใช้ String Resource สำหรับ Android นะ แหะ ๆ
3) ArrayList และการวนลูปแบบมี index มาให้
ก่อนอื่นในภาษา Java เวลาเราเพิ่มของใน ArrayList เราสร้าง ArrayList เปล่า ๆ ขึ้นมาอันนึง แล้วก็ค่อย ๆ เพิ่มของทีละอัน
การวนลูป เราก็สร้าง for loop แบบท่าปกติเลย โดยเราจะอ้างอิงจำนวนครั้งในการวนลูปถึง ขนาดของ arrayList ตัวนั้น
ถ้าเราต้องการให้คืนค่า index กลับไปด้วย จะต้องคืนค่า i
ออกมาด้วย
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> foodList = new ArrayList<String>();
foodList.add("Cupcake");
foodList.add("Nom-yen");
foodList.add("Lemon Ice Tea");
foodList.add("Matcha Latte");
foodList.add("Taro Milkshake");
foodList.add("Blue Hawaii");
foodList.add("Cheesecake");
foodList.add("Thai Milk Tea");
for (int i = 0; i < foodList.size(); i++) {
System.out.println(foodList.get(i) + " " + i);
}
}
}
แต่ภาษา Kotlin เราสามารถยัดทุกก้อน เข้าไปในการสร้าง arrayLst ได้เลย และมี forEach
ที่สามารถเรียกต่อจาก array ที่เราต้องการ มาใช้งาน for-loop ได้เลย
fun main() {
val foodList = arrayListOf(
"Cupcake", "Nom-yen", "Lemon Ice Tea",
"Matcha Latte", "Taro Milkshake", "Blue Hawaii",
"Cheesecake", "Thai Milk Tea"
)
foodList.forEach { food ->
println(food)
}
}
แต่ที่พิเศษกว่านั้น คือมี forEachIndexed
ที่นอกจากจะ return ค่า ใน array นั้น ๆ แล้ว ยังคืนค่า index
ด้วยนะ เรียกว่าเป็นคำสั่ง for-loop ขวัญใจชาวเดฟเลยทีเดียว ตัวอย่างโค้ดก็คือ หาเมนูที่มีคำว่า cake ให้หน่อย
fun main() {
val foodList = arrayListOf(
"Cupcake", "Nom-yen", "Lemon Ice Tea",
"Matcha Latte", "Taro Milkshake", "Blue Hawaii",
"Cheesecake", "Thai Milk Tea"
)
foodList.forEachIndexed { index, food ->
println("${food} ${index}")
}
}
สามารถอ่าน document ของ forEach และ forEachIndexed ได้ที่นี่เลย
ปล. การอ้างอิงค่าใน array ของภาษา Kotlin จะใช้เป็น foodList[index]
นะ
4) ใช้ filter เพื่อหาของใน arrayList แบบง่าย ๆ
จากตัวอย่างข้อที่แล้ว ถ้าเราต้องการค้นหาเมนู ที่มีคำว่า cake ออกมาเป็น list ก้อนใหม่เลย ในภาษา Java เราอาจจะวน for loop แบบเมื่อกี้ เพื่อสร้าง list นี้ออกมา
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> foodList = new ArrayList<String>();
foodList.add("Cupcake");
foodList.add("Nom-yen");
foodList.add("Lemon Ice Tea");
foodList.add("Matcha Latte");
foodList.add("Taro Milkshake");
foodList.add("Blue Hawaii");
foodList.add("Cheesecake");
foodList.add("Thai Milk Tea");
ArrayList<String> result = new ArrayList<String>();
for (int i = 0; i < foodList.size(); i++) {
if (foodList.get(i).contains("cake")) {
result.add(foodList.get(i));
}
}
System.out.println(result);
}
}
แต่ในภาษา Kotlin เราไม่ต้องทำอะไรแบบนั้น แค่ใช้ filter เท่านั้นเอง ง่าย ๆ
fun main() {
val foodList = arrayListOf(
"Cupcake", "Nom-yen", "Lemon Ice Tea",
"Matcha Latte", "Taro Milkshake", "Blue Hawaii",
"Cheesecake", "Thai Milk Tea"
)
val result = foodList.filter { it.contains("cake") }
println(result)
}
สามารถอ่าน document ของ filter ได้ที่นี่เลย
5) random เลขเป็น list ได้ด้วยหรอพี่
เป็นท่าที่เจอโดยบังเอิญ ว่าสมมติเรา random 20 เลข จาก 1000 เลข โดยไม่ซํ้ากัน ต้องทำยังไงนะ
อาจจะต้อง random เลขเก็บไว้ใน list แต่ก่อนเก็บลง list ก็ต้อง check ก่อนว่ามันไม่ซํ้าไหมนะ ถ้าซํ้าก็ทำใหม่
ในภาษา Kotlin สามารถใช้ Random.nextInt()
และให้มันคืนค่าเลขที่ไม่ซํ้าออกมาเป็น list ออกมาให้เรา แต่เลขข้างในต้องไปเรียงเอาเองนะ
import kotlin.random.Random
fun main() {
val randomValues = List(20) { Random.nextInt(0, 1000) }
println(randomValues)
}
สามารถอ่าน document ของ random ได้ที่นี่เลย
จริง ๆ แล้ว ของดีของ Kotlin ยังไม่หมดแค่นี้ เพราะยังมีอีกมากมาย
ถ้าใครอยากลองสัมผัส เชิญชวนได้ที่คอร์ส Getting Started with Kotlin นี้เลย เนื้อหา official จากทีม Android สอนโดยคุณเอก Android GDE เชียวนะ
แต่ทางเราได้ข่าวมาว่า มีคนอยากได้เสื้อ Kotlin สวย ๆ นี้ไปใส่ใช่ไหมหล่า แต่ไม่ทันรอบที่แล้ว
บอกเลยว่าคอร์สนี้เรียนฟรี เรียนจบครบตามเกณฑ์แล้วได้ของฟรีด้วยน้า
ตัวกิจกรรมจะมีถึงวันที่ 16 ธันวาคม 2565 ของแจกแบบ first come first serve ช้าหมดอดน้า
📝 กติกาการรับของรางวัล
- เรียนคอร์ส Getting Started with Kotlin จบ 100%
https://to.skooldio.com/kotlin-online-course-free - ทำแบบทดสอบวัดความรู้เรื่อง Kotlin ได้คะแนน 225 คะแนนขึ้นไป
https://to.skooldio.com/kotlin-skill-score - ลงทะเบียนรับเพื่อรับของรางวัลจากทาง Google ได้ ที่นี่เลย
https://forms.gle/59WReyXy1JnXXexe8
คนที่มาจากเพจเราหรือเจอบล็อกเรา อย่าลืมวงเล็บ MikkiPastel ไว้หลังชื่อแบบนี้ด้วยนะ เพราะรอบนี้จะมีสติ๊กเกอร์จากเพจของเราด้วยน้า
สามารถ support ค่ากาแฟเจ้าของบล็อกได้ที่ปุ่มแดงส้มสุดน่ารักที่มุมซ้ายล่าง หรือกดปุ่มตรงนี้ก็ได้จ้า
ช่องทาง Twitter ติดตามข่าวสารแบบไวๆ
ติดตามข่าวสารและบทความใหม่ๆได้ที่
ช่องทางใหม่ ติดตามทุกๆสตรีมของเราได้ที่
Subscribe ช่อง YouTube ของเราได้ที่
download แอพอ่านบล็อกใหม่ของเราได้ที่นี่