Kotlin Bootcamp for Programmers 2: Kotlin basics

Codelab นี้เป็นส่วนหนึ่งของหลักสูตร Kotlin Bootcamp สำหรับโปรแกรมเมอร์ คุณจะได้รับประโยชน์สูงสุดจากหลักสูตรนี้หากทำตาม Codelab ตามลำดับ คุณอาจข้ามบางส่วนได้ ทั้งนี้ขึ้นอยู่กับความรู้ของคุณ หลักสูตรนี้เหมาะสำหรับโปรแกรมเมอร์ที่รู้จักภาษาเชิงวัตถุและต้องการเรียนรู้ Kotlin

บทนำ

ในโค้ดแล็บนี้ คุณจะได้เรียนรู้พื้นฐานของภาษาโปรแกรม Kotlin ได้แก่ ประเภทข้อมูล ตัวดำเนินการ ตัวแปร โครงสร้างควบคุม และตัวแปรที่กำหนดค่า Null ได้เทียบกับตัวแปรที่กำหนดค่า Null ไม่ได้ หลักสูตรนี้เหมาะสำหรับโปรแกรมเมอร์ที่รู้จักภาษาเชิงวัตถุและต้องการเรียนรู้ Kotlin

บทเรียนในหลักสูตรนี้ได้รับการออกแบบมาเพื่อสร้างความรู้ของคุณ แต่จะมีความเป็นอิสระจากกันในระดับหนึ่งเพื่อให้คุณข้ามส่วนที่คุณคุ้นเคยได้ แทนที่จะสร้างแอปตัวอย่างเพียงแอปเดียว ตัวอย่างหลายรายการใช้ธีมตู้ปลาเพื่อเชื่อมโยงตัวอย่างต่างๆ เข้าด้วยกัน และหากต้องการดูเรื่องราวทั้งหมดของตู้ปลา ให้ดูหลักสูตร Kotlin Bootcamp for Programmers ของ Udacity

สิ่งที่คุณควรทราบอยู่แล้ว

  • วิธีสร้างโปรเจ็กต์ใน IntelliJ IDEA
  • วิธีเปิดและเรียกใช้โค้ดใน REPL (Read-Eval-Print Loop) ของ Kotlin ใน IntelliJ IDEA (Tools > Kotlin > Kotlin REPL)

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้ประเภทข้อมูล ตัวดำเนินการ และตัวแปรของ Kotlin
  • วิธีทำงานกับบูลีนและเงื่อนไข
  • ความแตกต่างระหว่างตัวแปรที่กำหนดค่า Null ได้และกำหนดค่า Null ไม่ได้
  • วิธีการทำงานของอาร์เรย์ รายการ และลูปใน Kotlin

สิ่งที่คุณต้องดำเนินการ

  • ใช้ Kotlin REPL เพื่อเรียนรู้พื้นฐานของ Kotlin

ในงานนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการและประเภทในภาษาโปรแกรม Kotlin

ขั้นตอนที่ 1: สำรวจตัวดำเนินการที่เป็นตัวเลข

  1. เปิด IntelliJ IDEA หากยังไม่ได้เปิด
  2. หากต้องการเปิด Kotlin REPL ให้เลือกเครื่องมือ > Kotlin > Kotlin REPL

เช่นเดียวกับภาษาอื่นๆ Kotlin ใช้ +, -, * และ / สำหรับบวก ลบ คูณ และหาร นอกจากนี้ Kotlin ยังรองรับตัวเลขประเภทต่างๆ เช่น Int, Long, Double และ Float

  1. ป้อนนิพจน์ต่อไปนี้ใน REPL หากต้องการดูผลลัพธ์ ให้กด Control+Enter (Command+Enter ใน Mac) หลังแต่ละรายการ
1+1
⇒ res8: kotlin.Int = 2

53-3
⇒ res9: kotlin.Int = 50

50/10
⇒ res10: kotlin.Int = 5

1.0/2.0
⇒ res11: kotlin.Double = 0.5

2.0*3.5
⇒ res12: kotlin.Double = 7.0

โปรดทราบว่าผลลัพธ์ของการดำเนินการจะคงประเภทของตัวถูกดำเนินการไว้ ดังนั้น 1/2 = 0 แต่ 1.0/2.0 = 0.5

  1. ลองใช้นิพจน์ที่มีการผสมผสานตัวเลขจำนวนเต็มและทศนิยมแบบต่างๆ
6*50
⇒ res13: kotlin.Int = 300

6.0*50.0
⇒ res14: kotlin.Double = 300.0

6.0*50
⇒ res15: kotlin.Double = 300.0
  1. เรียกใช้เมธอดบางอย่างกับตัวเลข Kotlin จะเก็บตัวเลขไว้เป็นแบบดั้งเดิม แต่จะให้คุณเรียกใช้เมธอดกับตัวเลขได้ราวกับว่าตัวเลขนั้นเป็นออบเจ็กต์
2.times(3)
⇒ res5: kotlin.Int = 6

3.5.plus(4)
⇒ res8: kotlin.Double = 7.5

2.4.div(2)
⇒ res9: kotlin.Double = 1.2

ขั้นตอนที่ 2: ฝึกใช้ประเภท

Kotlin จะไม่แปลงประเภทตัวเลขโดยนัย ดังนั้นคุณจึงกำหนดค่า Short ให้กับตัวแปร Long โดยตรง หรือกำหนดค่า Byte ให้กับ Int ไม่ได้ เนื่องจากการแปลงตัวเลขโดยนัยเป็นแหล่งที่มาของข้อผิดพลาดที่พบบ่อยในโปรแกรม คุณกำหนดค่าประเภทต่างๆ ได้เสมอโดยการแคสต์

  1. หากต้องการดูการแคสต์บางรายการที่ทำได้ ให้กำหนดตัวแปรประเภท Int ใน REPL
val i: Int = 6
  1. สร้างตัวแปรใหม่ จากนั้นป้อนชื่อตัวแปรที่แสดงด้านบน ตามด้วย .to
val b1 = i.to

IntelliJ IDEA จะแสดงรายการการเติมโค้ดที่เป็นไปได้ การเติมข้อความอัตโนมัตินี้ใช้ได้กับตัวแปรและออบเจ็กต์ทุกประเภท

  1. เลือก toByte() จากรายการ แล้วพิมพ์ตัวแปร
val b1 = i.toByte()
println(b1)
⇒ 6
  1. กําหนดByteค่าให้กับตัวแปรประเภทต่างๆ
val b2: Byte = 1 // OK, literals are checked statically
println(b2)
⇒ 1

val i1: Int = b2
⇒ error: type mismatch: inferred type is Byte but Int was expected

val i2: String = b2
⇒ error: type mismatch: inferred type is Byte but String was expected

val i3: Double = b2
⇒ error: type mismatch: inferred type is Byte but Double was expected
  1. สำหรับงานที่แสดงข้อผิดพลาด ให้ลองแคสต์แทน
val i4: Int = b2.toInt() // OK!
println(i4)
⇒ 1

val i5: String = b2.toString()
println(i5)
⇒ 1

val i6: Double = b2.toDouble()
println(i6)
⇒ 1.0
  1. Kotlin อนุญาตให้คุณใส่ขีดล่างในตัวเลขได้ตามที่ต้องการ เพื่อให้ค่าคงที่ตัวเลขยาวๆ อ่านง่ายขึ้น ลองป้อนค่าคงที่ตัวเลขอื่น
val oneMillion = 1_000_000
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

ขั้นตอนที่ 3: ดูมูลค่าของประเภทตัวแปร

Kotlin รองรับตัวแปร 2 ประเภท ได้แก่ ตัวแปรที่เปลี่ยนแปลงได้และตัวแปรที่เปลี่ยนแปลงไม่ได้ val ช่วยให้คุณกำหนดมูลค่าได้เพียงครั้งเดียว หากพยายามมอบหมายอีกครั้ง คุณจะได้รับข้อผิดพลาด varช่วยให้คุณกำหนดค่าแล้วเปลี่ยนค่าในโปรแกรมได้ในภายหลัง

  1. กำหนดตัวแปรโดยใช้ val และ var จากนั้นกำหนดค่าใหม่ให้กับตัวแปร
var fish = 1
fish = 2
val aquarium = 1
aquarium = 2
⇒ error: val cannot be reassigned

คุณกำหนดfishเป็นค่าหนึ่ง แล้วกำหนดค่าใหม่ให้ได้ เนื่องจากมีการกำหนดด้วย var การพยายามกำหนดค่าใหม่ให้กับ aquarium จะทำให้เกิดข้อผิดพลาดเนื่องจากมีการกำหนดด้วย val

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

  1. กำหนดตัวแปรบางรายการและระบุประเภทอย่างชัดเจน
var fish: Int = 12
var lakes: Double = 2.5

เมื่อคุณหรือคอมไพเลอร์กำหนดประเภทแล้ว คุณจะเปลี่ยนประเภทไม่ได้ หรือไม่เช่นนั้นจะได้รับข้อผิดพลาด

ขั้นตอนที่ 4: ดูข้อมูลเกี่ยวกับสตริง

สตริงใน Kotlin ทำงานคล้ายกับสตริงในภาษาโปรแกรมอื่นๆ โดยใช้ " สำหรับสตริงและ ' สำหรับอักขระเดี่ยว และคุณสามารถต่อสตริงด้วยตัวดำเนินการ + คุณสร้างเทมเพลตสตริงได้โดยการรวมเข้ากับค่า โดยระบบจะแทนที่ชื่อ $variable ด้วยข้อความที่แสดงค่า ซึ่งเรียกว่าการประมาณค่าตัวแปร

  1. สร้างเทมเพลตสตริง
val numberOfFish = 5
val numberOfPlants = 12
"I have $numberOfFish fish" + " and $numberOfPlants plants"
⇒ res20: kotlin.String = I have 5 fish and 12 plants
  1. สร้างเทมเพลตสตริงที่มีนิพจน์ เช่นเดียวกับในภาษาอื่นๆ ค่าอาจเป็นผลลัพธ์ของนิพจน์ได้ ใช้เครื่องหมายปีกกา {} เพื่อกำหนดนิพจน์
"I have ${numberOfFish + numberOfPlants} fish and plants"
⇒ res21: kotlin.String = I have 17 fish and plants

ในงานนี้ คุณจะได้เรียนรู้เกี่ยวกับบูลีนและการตรวจสอบเงื่อนไขในภาษาโปรแกรม Kotlin Kotlin มีบูลีนและโอเปอเรเตอร์บูลีน เช่น น้อยกว่า เท่ากับ มากกว่า และอื่นๆ (<, ==, >, !=, <=, >=) เช่นเดียวกับภาษาอื่นๆ

  1. เขียนคำชี้แจง if/else
val numberOfFish = 50
val numberOfPlants = 23
if (numberOfFish > numberOfPlants) {
    println("Good ratio!") 
} else {
    println("Unhealthy ratio")
}
⇒ Good ratio!
  1. ลองใช้ช่วงในคำสั่ง if ใน Kotlin เงื่อนไขที่คุณทดสอบจะใช้ช่วงได้ด้วย
val fish = 50
if (fish in 1..100) {
    println(fish)
}
⇒ 50
  1. เขียน if ที่มีหลายเคส สำหรับเงื่อนไขที่ซับซ้อนมากขึ้น ให้ใช้ตรรกะและ && และตรรกะหรือ || คุณสามารถมีหลายกรณีได้โดยใช้ else if เช่นเดียวกับในภาษาอื่นๆ
if (numberOfFish == 0) {
    println("Empty tank")
} else if (numberOfFish < 40) {
    println("Got fish!")
} else {
    println("That's a lot of fish!")
}
⇒ That's a lot of fish!
  1. ลองใช้whenคำสั่ง Kotlin มีวิธีที่ง่ายกว่าในการเขียนชุดคำสั่ง if/else if/else โดยใช้คำสั่ง when ซึ่งคล้ายกับคำสั่ง switch ในภาษาอื่นๆ เงื่อนไขในคำสั่ง when สามารถใช้ช่วงได้เช่นกัน
when (numberOfFish) {
    0  -> println("Empty tank")
    in 1..39 -> println("Got fish!")
    else -> println("That's a lot of fish!")
}
⇒ That's a lot of fish!

ในงานนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวแปรที่กำหนดค่า Null ได้และกำหนดค่า Null ไม่ได้ ข้อผิดพลาดในการเขียนโปรแกรมที่เกี่ยวข้องกับค่า Null เป็นแหล่งที่มาของข้อบกพร่องมากมาย Kotlin พยายามลดข้อบกพร่องด้วยการเปิดตัวตัวแปรที่ไม่เป็น Null

ขั้นตอนที่ 1: ดูข้อมูลเกี่ยวกับค่า Null

โดยค่าเริ่มต้น ตัวแปรจะnullไม่ได้

  1. ประกาศ Int และกำหนด null ให้กับ Int
var rocks: Int = null
⇒ error: null can not be a value of a non-null type Int
  1. ใช้โอเปอเรเตอร์เครื่องหมายคำถาม ? หลังประเภทเพื่อระบุว่าตัวแปรเป็น Null ได้ ประกาศ Int? และกำหนด null ให้กับ Int?
var marbles: Int? = null

เมื่อมีประเภทข้อมูลที่ซับซ้อน เช่น รายการ ให้ทำดังนี้

  • คุณอนุญาตให้องค์ประกอบของรายการเป็น Null ได้
  • คุณอนุญาตให้รายการเป็น Null ได้ แต่หากไม่ใช่ Null องค์ประกอบของรายการต้องไม่ใช่ Null
  • คุณอนุญาตให้ทั้งรายการหรือองค์ประกอบเป็น Null ได้

รายการและข้อมูลประเภทอื่นๆ ที่ซับซ้อนจะกล่าวถึงในงานภายหลัง

ขั้นตอนที่ 2: ดูข้อมูลเกี่ยวกับ ? และโอเปอเรเตอร์ ?:

คุณทดสอบ null ได้ด้วยโอเปอเรเตอร์ ? ซึ่งช่วยให้คุณไม่ต้องเขียนคำสั่ง if/else จำนวนมาก

  1. เขียนโค้ดแบบยาวเพื่อตรวจสอบว่าตัวแปร fishFoodTreats ไม่ใช่ null จากนั้นลดค่าตัวแปรนั้น
var fishFoodTreats = 6
if (fishFoodTreats != null) {
    fishFoodTreats = fishFoodTreats.dec()
}
  1. ตอนนี้มาดูวิธีเขียนใน Kotlin โดยใช้โอเปอเรเตอร์ ? กัน
var fishFoodTreats = 6
fishFoodTreats = fishFoodTreats?.dec()
  1. นอกจากนี้ คุณยังเชื่อมโยงการทดสอบค่าว่างกับโอเปอเรเตอร์ ?: ได้ด้วย ดูตัวอย่างนี้
fishFoodTreats = fishFoodTreats?.dec() ?: 0

ซึ่งเป็นคำย่อของ "หาก fishFoodTreats ไม่ใช่ null ให้ลดค่าและใช้ค่าดังกล่าว ไม่เช่นนั้นให้ใช้ค่าหลัง ?: ซึ่งก็คือ 0" หาก fishFoodTreats เป็น null ระบบจะหยุดการประเมินและจะไม่เรียกใช้เมธอด dec()

ข้อควรทราบเกี่ยวกับตัวชี้ Null

หากคุณรัก NullPointerExceptions จริงๆ Kotlin ก็ให้คุณเก็บไว้ได้ ตัวดำเนินการยืนยันว่าไม่ใช่ค่าว่าง !! (เครื่องหมายตกใจคู่) จะแปลงค่าใดๆ ให้เป็นประเภทที่ไม่ใช่ค่าว่าง และจะส่งข้อยกเว้นหากค่าเป็น null

val len = s!!.length   // throws NullPointerException if s is null

ในงานนี้ คุณจะได้เรียนรู้เกี่ยวกับอาร์เรย์และรายการ รวมถึงวิธีต่างๆ ในการสร้างลูปในภาษาโปรแกรม Kotlin

ขั้นตอนที่ 1: สร้างรายการ

ลิสต์เป็นประเภทพื้นฐานใน Kotlin และคล้ายกับลิสต์ในภาษาอื่นๆ

  1. ประกาศรายการโดยใช้ listOf แล้วพิมพ์ออกมา รายการนี้เปลี่ยนแปลงไม่ได้
val school = listOf("mackerel", "trout", "halibut")
println(school)
⇒ [mackerel, trout, halibut]
  1. ประกาศรายการที่เปลี่ยนแปลงได้โดยใช้ mutableListOf นำรายการออก
val myList = mutableListOf("tuna", "salmon", "shark")
myList.remove("shark")
⇒ res36: kotlin.Boolean = true

เมธอด remove() จะแสดงผล true เมื่อนำรายการที่ส่งผ่านออกเรียบร้อยแล้ว

ขั้นตอนที่ 2: สร้างอาร์เรย์

Kotlin มีอาร์เรย์เช่นเดียวกับภาษาอื่นๆ Array ไม่มีเวอร์ชันที่เปลี่ยนแปลงได้ ซึ่งแตกต่างจากรายการใน Kotlin ที่มีทั้งเวอร์ชันที่เปลี่ยนแปลงได้และเปลี่ยนแปลงไม่ได้ เมื่อสร้างอาร์เรย์แล้ว ขนาดจะคงที่ คุณจะเพิ่มหรือนำองค์ประกอบออกไม่ได้ ยกเว้นจะคัดลอกไปยังอาร์เรย์ใหม่

กฎเกี่ยวกับการใช้ val และ var จะเหมือนกันทั้งในอาร์เรย์และลิสต์

  1. ประกาศอาร์เรย์ของสตริงโดยใช้ arrayOf ใช้ยูทิลิตีอาร์เรย์ java.util.Arrays.toString() เพื่อพิมพ์
val school = arrayOf("shark", "salmon", "minnow")
println(java.util.Arrays.toString(school))
⇒ [shark, salmon, minnow]
  1. อาร์เรย์ที่ประกาศด้วย arrayOf จะไม่มีประเภทที่เชื่อมโยงกับองค์ประกอบ ดังนั้นคุณจึงสามารถผสมประเภทต่างๆ ได้ ซึ่งเป็นประโยชน์ ประกาศอาร์เรย์ที่มีประเภทต่างๆ
val mix = arrayOf("fish", 2)
  1. นอกจากนี้ คุณยังประกาศอาร์เรย์ที่มีประเภทเดียวสำหรับองค์ประกอบทั้งหมดได้ด้วย ประกาศอาร์เรย์ของจำนวนเต็มโดยใช้ intArrayOf() มีตัวสร้างที่สอดคล้องกันหรือฟังก์ชันการสร้างอินสแตนซ์สำหรับอาร์เรย์ของประเภทอื่นๆ
val numbers = intArrayOf(1,2,3)
  1. รวมอาร์เรย์ 2 รายการด้วยโอเปอเรเตอร์ +
val numbers = intArrayOf(1,2,3)
val numbers3 = intArrayOf(4,5,6)
val foo2 = numbers3 + numbers
println(foo2[5])
=> 3
  1. ลองใช้ชุดค่าผสมต่างๆ ของอาร์เรย์และลิสต์ที่ซ้อนกัน คุณซ้อนอาร์เรย์และลิสต์ได้เช่นเดียวกับในภาษาอื่นๆ กล่าวคือ เมื่อคุณใส่อาร์เรย์ไว้ในอาร์เรย์ คุณจะมีอาร์เรย์ของอาร์เรย์ ไม่ใช่อาร์เรย์แบบแบนของเนื้อหาในอาร์เรย์ทั้ง 2 รายการ องค์ประกอบของอาร์เรย์อาจเป็นลิสต์ และองค์ประกอบของลิสต์อาจเป็นอาร์เรย์ได้เช่นกัน
val numbers = intArrayOf(1, 2, 3)
val oceans = listOf("Atlantic", "Pacific")
val oddList = listOf(numbers, oceans, "salmon")
println(oddList)
⇒ [[I@89178b4, [Atlantic, Pacific], salmon]

องค์ประกอบแรก numbers คือ Array เมื่อคุณไม่ได้ใช้ยูทิลิตีอาร์เรย์เพื่อพิมพ์ Kotlin จะพิมพ์ที่อยู่แทนเนื้อหาของอาร์เรย์

  1. ข้อดีอย่างหนึ่งของ Kotlin คือคุณสามารถเริ่มต้นอาร์เรย์ด้วยโค้ดแทนการเริ่มต้นเป็น 0 ได้ ลองดูตัวอย่างนี้
val array = Array (5) { it * 2 }
println(java.util.Arrays.toString(array))
⇒ [0, 2, 4, 6, 8]

โค้ดการเริ่มต้นจะอยู่ระหว่างวงเล็บปีกกา {} ในโค้ด it หมายถึงดัชนีอาร์เรย์ โดยเริ่มต้นที่ 0

ขั้นตอนที่ 3: สร้างลูป

เมื่อมีลิสต์และอาร์เรย์แล้ว การวนซ้ำองค์ประกอบจะทำงานตามที่คุณคาดไว้

  1. สร้างอาร์เรย์ ใช้ลูป for เพื่อวนซ้ำในอาร์เรย์และพิมพ์องค์ประกอบ
val school = arrayOf("shark", "salmon", "minnow")
for (element in school) {
    print(element + " ")
}
⇒ shark salmon minnow
  1. ใน Kotlin คุณสามารถวนซ้ำองค์ประกอบและดัชนีได้พร้อมกัน ลองดูตัวอย่างนี้
for ((index, element) in school.withIndex()) {
    println("Item at $index is $element\n")
}
⇒ Item at 0 is shark
Item at 1 is salmon
Item at 2 is minnow
  1. ลองใช้ขนาดและช่วงของขั้นต่างๆ คุณระบุช่วงของตัวเลขหรืออักขระตามลำดับตัวอักษรได้ และเช่นเดียวกับภาษาอื่นๆ คุณไม่จำเป็นต้องเพิ่มทีละ 1 คุณย้อนกลับได้โดยใช้ downTo
for (i in 1..5) print(i)
⇒ 12345

for (i in 5 downTo 1) print(i)
⇒ 54321

for (i in 3..6 step 2) print(i)
⇒ 35

for (i in 'd'..'g') print (i)
⇒ defg
  1. ลองใช้ลูปบางรายการ เช่นเดียวกับภาษาอื่นๆ Kotlin มีลูป while, ลูป do...while รวมถึงตัวดำเนินการ ++ และ -- Kotlin มีลูป repeat ด้วย
var bubbles = 0
while (bubbles < 50) {
    bubbles++
}
println("$bubbles bubbles in the water\n")

do {
    bubbles--
} while (bubbles > 50)
println("$bubbles bubbles in the water\n")

repeat(2) {
     println("A fish is swimming")
}
⇒ 50 bubbles in the water
49 bubbles in the water
A fish is swimmingA fish is swimming

Kotlin มีความคล้ายคลึงกับภาษาอื่นๆ มากในเรื่องพื้นฐาน เช่น ตัวดำเนินการ รายการ และลูป แต่ก็มีข้อแตกต่างที่สำคัญบางประการ

ฟีเจอร์ต่อไปนี้อาจแตกต่างกันใน Kotlin จากที่คุณคุ้นเคยในภาษาอื่นๆ

  • ไม่สามารถแปลงประเภท Kotlin โดยนัยได้ ให้ใช้การแคสต์
  • ตัวแปรที่ประกาศด้วย val จะกำหนดได้เพียงครั้งเดียว
  • ตัวแปร Kotlin จะไม่เป็น Null ได้โดยค่าเริ่มต้น ใช้ ? เพื่อทำให้ตัวแปรเป็นค่า Null ได้
  • เมื่อใช้ Kotlin คุณจะวนซ้ำดัชนีและองค์ประกอบของอาร์เรย์ได้พร้อมกันในลูป for

โครงสร้างการเขียนโปรแกรม Kotlin ต่อไปนี้คล้ายกับโครงสร้างในภาษาอื่นๆ

  • อาร์เรย์และลิสต์อาจมีประเภทเดียวหรือหลายประเภทก็ได้
  • คุณสามารถซ้อนอาร์เรย์และลิสต์ได้
  • คุณสร้างลูปได้ด้วย for, while, do/while และ repeat
  • คำสั่ง when คือเวอร์ชันของคำสั่ง switch ใน Kotlin แต่ when มีความยืดหยุ่นมากกว่า

เอกสารประกอบ Kotlin

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อใดก็ตามในหลักสูตรนี้ หรือหากคุณติดขัด https://kotlinlang.org คือจุดเริ่มต้นที่ดีที่สุด

บทแนะนำ Kotlin

เว็บไซต์ https://try.kotlinlang.org มีบทแนะนำที่สมบูรณ์ซึ่งเรียกว่า Kotlin Koans, ตัวแปลภาษาบนเว็บ และชุดเอกสารอ้างอิงที่สมบูรณ์พร้อมตัวอย่าง

หลักสูตร Udacity

หากต้องการดูหลักสูตร Udacity ในหัวข้อนี้ โปรดดูค่ายฝึก Kotlin สำหรับโปรแกรมเมอร์

IntelliJ IDEA

เอกสารประกอบสำหรับ IntelliJ IDEA อยู่ในเว็บไซต์ของ JetBrains

ส่วนนี้แสดงรายการการบ้านที่เป็นไปได้สำหรับนักเรียน/นักศึกษาที่กำลังทำ Codelab นี้เป็นส่วนหนึ่งของหลักสูตรที่สอนโดยผู้สอน ผู้สอนมีหน้าที่ดำเนินการต่อไปนี้

  • มอบหมายการบ้านหากจำเป็น
  • สื่อสารกับนักเรียนเกี่ยวกับวิธีส่งงานที่ได้รับมอบหมาย
  • ให้คะแนนงานการบ้าน

ผู้สอนสามารถใช้คำแนะนำเหล่านี้ได้มากน้อยตามที่ต้องการ และควรมีอิสระในการมอบหมายการบ้านอื่นๆ ที่เห็นว่าเหมาะสม

หากคุณกำลังทำ Codelab นี้ด้วยตนเอง โปรดใช้แบบฝึกหัดเหล่านี้เพื่อทดสอบความรู้ของคุณ

ตอบคำถามต่อไปนี้

คำถามที่ 1

ข้อใดต่อไปนี้ประกาศรายการสตริงที่เปลี่ยนแปลงไม่ได้

val school = arrayOf("shark", "salmon", "minnow")

var school = arrayOf("shark", "salmon", "minnow")

val school = listOf("shark", "salmon", "minnow")

val school = mutableListOf("shark", "salmon", "minnow")

คำถามที่ 2

โค้ดต่อไปนี้จะแสดงผลลัพธ์เป็นอะไร
for (i in 3..8 step 2) print(i)

▢ 345678

▢ 468

▢ 38

▢ 357

คำถามที่ 3

เครื่องหมายคำถามในโค้ดนี้มีไว้เพื่ออะไร
var rocks: Int? = 3

▢ ประเภทของตัวแปร rocks ไม่คงที่

▢ ตั้งค่าตัวแปร rocks เป็น Null ได้

▢ ตั้งค่าตัวแปร rocks เป็น Null ไม่ได้

▢ ไม่ควรเริ่มต้นตัวแปร rocks ทันที

ไปยังบทเรียนถัดไป: 3. ฟังก์ชัน

ดูภาพรวมของหลักสูตร รวมถึงลิงก์ไปยังโค้ดแล็บอื่นๆ ได้ที่ "Kotlin Bootcamp for Programmers: Welcome to the course"