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: สำรวจตัวดำเนินการที่เป็นตัวเลข
- เปิด IntelliJ IDEA หากยังไม่ได้เปิด
- หากต้องการเปิด Kotlin REPL ให้เลือกเครื่องมือ > Kotlin > Kotlin REPL
เช่นเดียวกับภาษาอื่นๆ Kotlin ใช้ +
, -
, *
และ /
สำหรับบวก ลบ คูณ และหาร นอกจากนี้ Kotlin ยังรองรับตัวเลขประเภทต่างๆ เช่น Int
, Long
, Double
และ Float
- ป้อนนิพจน์ต่อไปนี้ใน 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
- ลองใช้นิพจน์ที่มีการผสมผสานตัวเลขจำนวนเต็มและทศนิยมแบบต่างๆ
6*50 ⇒ res13: kotlin.Int = 300 6.0*50.0 ⇒ res14: kotlin.Double = 300.0 6.0*50 ⇒ res15: kotlin.Double = 300.0
- เรียกใช้เมธอดบางอย่างกับตัวเลข 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
ไม่ได้ เนื่องจากการแปลงตัวเลขโดยนัยเป็นแหล่งที่มาของข้อผิดพลาดที่พบบ่อยในโปรแกรม คุณกำหนดค่าประเภทต่างๆ ได้เสมอโดยการแคสต์
- หากต้องการดูการแคสต์บางรายการที่ทำได้ ให้กำหนดตัวแปรประเภท
Int
ใน REPL
val i: Int = 6
- สร้างตัวแปรใหม่ จากนั้นป้อนชื่อตัวแปรที่แสดงด้านบน ตามด้วย
.to
val b1 = i.to
IntelliJ IDEA จะแสดงรายการการเติมโค้ดที่เป็นไปได้ การเติมข้อความอัตโนมัตินี้ใช้ได้กับตัวแปรและออบเจ็กต์ทุกประเภท
- เลือก
toByte()
จากรายการ แล้วพิมพ์ตัวแปร
val b1 = i.toByte()
println(b1)
⇒ 6
- กําหนด
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
- สำหรับงานที่แสดงข้อผิดพลาด ให้ลองแคสต์แทน
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
- 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
ช่วยให้คุณกำหนดค่าแล้วเปลี่ยนค่าในโปรแกรมได้ในภายหลัง
- กำหนดตัวแปรโดยใช้
val
และvar
จากนั้นกำหนดค่าใหม่ให้กับตัวแปร
var fish = 1
fish = 2
val aquarium = 1
aquarium = 2
⇒ error: val cannot be reassigned
คุณกำหนดfish
เป็นค่าหนึ่ง แล้วกำหนดค่าใหม่ให้ได้ เนื่องจากมีการกำหนดด้วย var
การพยายามกำหนดค่าใหม่ให้กับ aquarium
จะทำให้เกิดข้อผิดพลาดเนื่องจากมีการกำหนดด้วย val
ระบบจะอนุมานประเภทที่คุณจัดเก็บไว้ในตัวแปรเมื่อคอมไพเลอร์สามารถระบุได้จากบริบท หากต้องการ คุณระบุประเภทของตัวแปรได้อย่างชัดเจนเสมอโดยใช้สัญกรณ์โคลอน
- กำหนดตัวแปรบางรายการและระบุประเภทอย่างชัดเจน
var fish: Int = 12
var lakes: Double = 2.5
เมื่อคุณหรือคอมไพเลอร์กำหนดประเภทแล้ว คุณจะเปลี่ยนประเภทไม่ได้ หรือไม่เช่นนั้นจะได้รับข้อผิดพลาด
ขั้นตอนที่ 4: ดูข้อมูลเกี่ยวกับสตริง
สตริงใน Kotlin ทำงานคล้ายกับสตริงในภาษาโปรแกรมอื่นๆ โดยใช้ "
สำหรับสตริงและ '
สำหรับอักขระเดี่ยว และคุณสามารถต่อสตริงด้วยตัวดำเนินการ +
คุณสร้างเทมเพลตสตริงได้โดยการรวมเข้ากับค่า โดยระบบจะแทนที่ชื่อ $
variable
ด้วยข้อความที่แสดงค่า ซึ่งเรียกว่าการประมาณค่าตัวแปร
- สร้างเทมเพลตสตริง
val numberOfFish = 5
val numberOfPlants = 12
"I have $numberOfFish fish" + " and $numberOfPlants plants"
⇒ res20: kotlin.String = I have 5 fish and 12 plants
- สร้างเทมเพลตสตริงที่มีนิพจน์ เช่นเดียวกับในภาษาอื่นๆ ค่าอาจเป็นผลลัพธ์ของนิพจน์ได้ ใช้เครื่องหมายปีกกา
{}
เพื่อกำหนดนิพจน์
"I have ${numberOfFish + numberOfPlants} fish and plants"
⇒ res21: kotlin.String = I have 17 fish and plants
ในงานนี้ คุณจะได้เรียนรู้เกี่ยวกับบูลีนและการตรวจสอบเงื่อนไขในภาษาโปรแกรม Kotlin Kotlin มีบูลีนและโอเปอเรเตอร์บูลีน เช่น น้อยกว่า เท่ากับ มากกว่า และอื่นๆ (<
, ==
, >
, !=
, <=
, >=
) เช่นเดียวกับภาษาอื่นๆ
- เขียนคำชี้แจง
if
/else
val numberOfFish = 50
val numberOfPlants = 23
if (numberOfFish > numberOfPlants) {
println("Good ratio!")
} else {
println("Unhealthy ratio")
}
⇒ Good ratio!
- ลองใช้ช่วงในคำสั่ง
if
ใน Kotlin เงื่อนไขที่คุณทดสอบจะใช้ช่วงได้ด้วย
val fish = 50
if (fish in 1..100) {
println(fish)
}
⇒ 50
- เขียน
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!
- ลองใช้
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
ไม่ได้
- ประกาศ
Int
และกำหนดnull
ให้กับInt
var rocks: Int = null
⇒ error: null can not be a value of a non-null type Int
- ใช้โอเปอเรเตอร์เครื่องหมายคำถาม
?
หลังประเภทเพื่อระบุว่าตัวแปรเป็น Null ได้ ประกาศInt?
และกำหนดnull
ให้กับInt?
var marbles: Int? = null
เมื่อมีประเภทข้อมูลที่ซับซ้อน เช่น รายการ ให้ทำดังนี้
- คุณอนุญาตให้องค์ประกอบของรายการเป็น Null ได้
- คุณอนุญาตให้รายการเป็น Null ได้ แต่หากไม่ใช่ Null องค์ประกอบของรายการต้องไม่ใช่ Null
- คุณอนุญาตให้ทั้งรายการหรือองค์ประกอบเป็น Null ได้
รายการและข้อมูลประเภทอื่นๆ ที่ซับซ้อนจะกล่าวถึงในงานภายหลัง
ขั้นตอนที่ 2: ดูข้อมูลเกี่ยวกับ ? และโอเปอเรเตอร์ ?:
คุณทดสอบ null
ได้ด้วยโอเปอเรเตอร์ ?
ซึ่งช่วยให้คุณไม่ต้องเขียนคำสั่ง if
/else
จำนวนมาก
- เขียนโค้ดแบบยาวเพื่อตรวจสอบว่าตัวแปร
fishFoodTreats
ไม่ใช่null
จากนั้นลดค่าตัวแปรนั้น
var fishFoodTreats = 6
if (fishFoodTreats != null) {
fishFoodTreats = fishFoodTreats.dec()
}
- ตอนนี้มาดูวิธีเขียนใน Kotlin โดยใช้โอเปอเรเตอร์
?
กัน
var fishFoodTreats = 6
fishFoodTreats = fishFoodTreats?.dec()
- นอกจากนี้ คุณยังเชื่อมโยงการทดสอบค่าว่างกับโอเปอเรเตอร์
?:
ได้ด้วย ดูตัวอย่างนี้
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 และคล้ายกับลิสต์ในภาษาอื่นๆ
- ประกาศรายการโดยใช้
listOf
แล้วพิมพ์ออกมา รายการนี้เปลี่ยนแปลงไม่ได้
val school = listOf("mackerel", "trout", "halibut")
println(school)
⇒ [mackerel, trout, halibut]
- ประกาศรายการที่เปลี่ยนแปลงได้โดยใช้
mutableListOf
นำรายการออก
val myList = mutableListOf("tuna", "salmon", "shark")
myList.remove("shark")
⇒ res36: kotlin.Boolean = true
เมธอด remove()
จะแสดงผล true
เมื่อนำรายการที่ส่งผ่านออกเรียบร้อยแล้ว
ขั้นตอนที่ 2: สร้างอาร์เรย์
Kotlin มีอาร์เรย์เช่นเดียวกับภาษาอื่นๆ Array
ไม่มีเวอร์ชันที่เปลี่ยนแปลงได้ ซึ่งแตกต่างจากรายการใน Kotlin ที่มีทั้งเวอร์ชันที่เปลี่ยนแปลงได้และเปลี่ยนแปลงไม่ได้ เมื่อสร้างอาร์เรย์แล้ว ขนาดจะคงที่ คุณจะเพิ่มหรือนำองค์ประกอบออกไม่ได้ ยกเว้นจะคัดลอกไปยังอาร์เรย์ใหม่
กฎเกี่ยวกับการใช้ val
และ var
จะเหมือนกันทั้งในอาร์เรย์และลิสต์
- ประกาศอาร์เรย์ของสตริงโดยใช้
arrayOf
ใช้ยูทิลิตีอาร์เรย์java.util.Arrays.toString()
เพื่อพิมพ์
val school = arrayOf("shark", "salmon", "minnow")
println(java.util.Arrays.toString(school))
⇒ [shark, salmon, minnow]
- อาร์เรย์ที่ประกาศด้วย
arrayOf
จะไม่มีประเภทที่เชื่อมโยงกับองค์ประกอบ ดังนั้นคุณจึงสามารถผสมประเภทต่างๆ ได้ ซึ่งเป็นประโยชน์ ประกาศอาร์เรย์ที่มีประเภทต่างๆ
val mix = arrayOf("fish", 2)
- นอกจากนี้ คุณยังประกาศอาร์เรย์ที่มีประเภทเดียวสำหรับองค์ประกอบทั้งหมดได้ด้วย ประกาศอาร์เรย์ของจำนวนเต็มโดยใช้
intArrayOf()
มีตัวสร้างที่สอดคล้องกันหรือฟังก์ชันการสร้างอินสแตนซ์สำหรับอาร์เรย์ของประเภทอื่นๆ
val numbers = intArrayOf(1,2,3)
- รวมอาร์เรย์ 2 รายการด้วยโอเปอเรเตอร์
+
val numbers = intArrayOf(1,2,3)
val numbers3 = intArrayOf(4,5,6)
val foo2 = numbers3 + numbers
println(foo2[5])
=> 3
- ลองใช้ชุดค่าผสมต่างๆ ของอาร์เรย์และลิสต์ที่ซ้อนกัน คุณซ้อนอาร์เรย์และลิสต์ได้เช่นเดียวกับในภาษาอื่นๆ กล่าวคือ เมื่อคุณใส่อาร์เรย์ไว้ในอาร์เรย์ คุณจะมีอาร์เรย์ของอาร์เรย์ ไม่ใช่อาร์เรย์แบบแบนของเนื้อหาในอาร์เรย์ทั้ง 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 จะพิมพ์ที่อยู่แทนเนื้อหาของอาร์เรย์
- ข้อดีอย่างหนึ่งของ Kotlin คือคุณสามารถเริ่มต้นอาร์เรย์ด้วยโค้ดแทนการเริ่มต้นเป็น 0 ได้ ลองดูตัวอย่างนี้
val array = Array (5) { it * 2 }
println(java.util.Arrays.toString(array))
⇒ [0, 2, 4, 6, 8]
โค้ดการเริ่มต้นจะอยู่ระหว่างวงเล็บปีกกา {}
ในโค้ด it
หมายถึงดัชนีอาร์เรย์ โดยเริ่มต้นที่ 0
ขั้นตอนที่ 3: สร้างลูป
เมื่อมีลิสต์และอาร์เรย์แล้ว การวนซ้ำองค์ประกอบจะทำงานตามที่คุณคาดไว้
- สร้างอาร์เรย์ ใช้ลูป
for
เพื่อวนซ้ำในอาร์เรย์และพิมพ์องค์ประกอบ
val school = arrayOf("shark", "salmon", "minnow")
for (element in school) {
print(element + " ")
}
⇒ shark salmon minnow
- ใน 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 คุณย้อนกลับได้โดยใช้
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
- ลองใช้ลูปบางรายการ เช่นเดียวกับภาษาอื่นๆ 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 คือจุดเริ่มต้นที่ดีที่สุด
- การแปลงประเภทอย่างชัดเจน
- การกำหนดตัวแปร
- เทมเพลตสตริง
- ค่าที่กำหนดให้เป็น Null ได้
- รายการ
- อาร์เรย์
if
,when
,for
,while
?:
(Elvis) โอเปอเรเตอร์!!
โอเปอเรเตอร์
บทแนะนำ 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
ทันที
ไปยังบทเรียนถัดไป:
ดูภาพรวมของหลักสูตร รวมถึงลิงก์ไปยังโค้ดแล็บอื่นๆ ได้ที่ "Kotlin Bootcamp for Programmers: Welcome to the course"