สรุปพื้นฐานภาษา Kotlin ที่เราจะมาศึกษากันในบทความนี้
Variable declaration- Type inference
- Null safety
Conditionals
- if , else if
- when
Functions
- Simplifying function declarations
- Anonymous functions
- Higher-order functions
Classes
- Properties
- Class functions and encapsulation
เริ่มต้นด้วย Variable declaration การประกาศตัวแปรแบบเบสิกที่สุด
val ใช้กับตัวแปรที่ไม่มีการเปลี่ยนแปลง เพราะตัวแปรประเภทนี้ไม่สามารถกำหนดค่าใหม่ๆให้มันได้
var สำหรับตัวแปรที่สามารถเปลี่ยนแปลงค่าได้
Example
val languageName: String = "Kotlin"
var count: Int = 10
count = 15
Type inference
Example :
val languageName = "Kotlin"
val upperCaseName = languageName.toUpperCase()
println(upperCaseName)
// แต่ถ้าเราใช้ Int operator function กับตัวแปรที่เป็น String จะไม่สามารถ Compile ได้เช่น
languageName.inc()
Null safety
val languageName: String = null
การประกาศตัวแปรแบบนี้จะไม่สามารถ compile ได้
ต้องใส่ ? เพิ่มเพื่อให้ตัวแปรนี้รองรับค่า null
val languageName: String? = null
Conditionals
if else
if (count == 42) {
println("I have the answer.")
} else {
println("The answer eludes me.")
}
else if
if (count == 42) {
println("I have the answer.")
} else if (count > 35) {
println("The answer is close.")
} else {
println("The answer eludes me.")
}
ถ้า count = 42 จะได้ output : I have the answer
ถ้า count = 43 จะได้ output : The answer is close.
ถ้า count = 10 จะได้ output : The answer eludes me.
(ด้านล่างจะไม่ใส่ output ให้แล้วนะ) - คนที่จะฝึกเขียนแนะนำ > https://play.kotlinlang.org
conditional expressions
กำหนดค่าตัวแปรได้เลยโดยไม่ต้องมี return
val answerString: String = if (count == 42) {
"I have the answer."
} else if (count > 35) {
"The answer is close."
} else {
"The answer eludes me."
}
kotlin ไม่มี ternary operator , switch case
ให้ใช้ when expression แทน
when (number) {
"0" -> {
code
}
"1" ->{
code
}
Or
val answerString = when {
count == 42 -> "I have the answer."
count > 35 -> "The answer is close."
else -> "The answer eludes me."
}
Functions
Simplifying function declarations
ฟังก์ชั่นแบบไม่มีการส่งตัวแปรเข้าไป และ return String
fun generateAnswerString(): String {
val answerString = if (count == 42) {
"I have the answer."
} else {
"The answer eludes me"
}
return answerString
}
ฟังก์ชั่นที่ส่งตัวแปรประเภท Int เข้าไปใช้งาน และ return String
fun generateAnswerString(countThreshold: Int): String {
return if (count > countThreshold) {
"I have the answer."
} else {
"The answer eludes me."
}
}
Anonymous functions
ฟังก์ชั่นที่ไม่มีชื่อฟังก์ชั่น !!
ตัวอย่าง - ฟังก์ชั่น นับจำนวนคำ มีการรับค่าแบบ String และ Return เป็น Int
val stringLengthFunc: (String) -> Int = {
input -> input.length
}
val stringLength: Int = stringLengthFunc("Android")
println(stringLength) // output : 7
Higher-order functions
ฟังก์ชั่นที่สามารถใช้ฟังก์ชั่นอื่นเป็น argument อารมณ์จะคล้ายกับ callback interface ในภาษา Java.
example 1
fun getString(callback: (String) -> Unit) {
val string: String = "My String"
callback(string)
}
getString{
println(it)
}
example 2
fun mylife(arg: String, func_name: (String) -> String): String {
return func_name(arg)
}
val result = mylife("Coding") { "I Love $it." }
println(result)
Classes
คลาสใช้ฟังก์ชัน > เพื่อจำลองพฤติกรรม
ส่วนฟังก์ชั่น > คือความสามารถของคลาส
การควบคุมการเข้าถึง > เป็นส่วนหนึ่งของแนวคิดเชิงวัตถุขนาดใหญ่ เรียกว่า "Encapsulation"
Example :
fun main() {
val car = Car() // สร้าง Object Car
val result = car.unlockDoor("1234") // ส่งเรียกใช้ฟังก์ชั่นปลดล็อคประตู
println(result) // return true เพราะ 1234 เป็นรหัสผ่านที่ถูกต้อง
}
class Car() {
private val att1: String = "1"
fun unlockDoor(password: String): Boolean {
if(password== "1234"){
return true
}else{
return false
}
}
}
ในตัวอย่างนี้ att1 เป็นคุณสมบัติถูกเก็บเป็นส่วนตัวจากสิ่งภายนอกคลาส Car
เรียกใช้ฟังก์ชั่น unlockDoor() ในการปลดล็อครถโดยส่งคีย์ 1234 เข้ามา
ภายในฟังก์ชั่นก็จำลองว่าถ้า key ที่ส่งเข้ามาคือ 1234 จะ return ture หมายถึงการปลดล็อครถสำเร็จ
ref :
https://developer.android.com/kotlin/learn
https://blacklenspub.com/easy-fp-with-kotlin-th-4aa0178482bd
when (number) {
"0" -> {
code
}
"1" ->{
code
}
Or
val answerString = when {
count == 42 -> "I have the answer."
count > 35 -> "The answer is close."
else -> "The answer eludes me."
}
Functions
Simplifying function declarations
ฟังก์ชั่นแบบไม่มีการส่งตัวแปรเข้าไป และ return String
fun generateAnswerString(): String {
val answerString = if (count == 42) {
"I have the answer."
} else {
"The answer eludes me"
}
return answerString
}
ฟังก์ชั่นที่ส่งตัวแปรประเภท Int เข้าไปใช้งาน และ return String
fun generateAnswerString(countThreshold: Int): String {
return if (count > countThreshold) {
"I have the answer."
} else {
"The answer eludes me."
}
}
Anonymous functions
ฟังก์ชั่นที่ไม่มีชื่อฟังก์ชั่น !!
ตัวอย่าง - ฟังก์ชั่น นับจำนวนคำ มีการรับค่าแบบ String และ Return เป็น Int
val stringLengthFunc: (String) -> Int = {
input -> input.length
}
val stringLength: Int = stringLengthFunc("Android")
println(stringLength) // output : 7
Higher-order functions
ฟังก์ชั่นที่สามารถใช้ฟังก์ชั่นอื่นเป็น argument อารมณ์จะคล้ายกับ callback interface ในภาษา Java.
example 1
fun getString(callback: (String) -> Unit) {
val string: String = "My String"
callback(string)
}
getString{
println(it)
}
example 2
fun mylife(arg: String, func_name: (String) -> String): String {
return func_name(arg)
}
val result = mylife("Coding") { "I Love $it." }
println(result)
Classes
คลาสใช้ฟังก์ชัน > เพื่อจำลองพฤติกรรม
ส่วนฟังก์ชั่น > คือความสามารถของคลาส
การควบคุมการเข้าถึง > เป็นส่วนหนึ่งของแนวคิดเชิงวัตถุขนาดใหญ่ เรียกว่า "Encapsulation"
Example :
fun main() {
val car = Car() // สร้าง Object Car
val result = car.unlockDoor("1234") // ส่งเรียกใช้ฟังก์ชั่นปลดล็อคประตู
println(result) // return true เพราะ 1234 เป็นรหัสผ่านที่ถูกต้อง
}
class Car() {
private val att1: String = "1"
fun unlockDoor(password: String): Boolean {
if(password== "1234"){
return true
}else{
return false
}
}
}
ในตัวอย่างนี้ att1 เป็นคุณสมบัติถูกเก็บเป็นส่วนตัวจากสิ่งภายนอกคลาส Car
เรียกใช้ฟังก์ชั่น unlockDoor() ในการปลดล็อครถโดยส่งคีย์ 1234 เข้ามา
ภายในฟังก์ชั่นก็จำลองว่าถ้า key ที่ส่งเข้ามาคือ 1234 จะ return ture หมายถึงการปลดล็อครถสำเร็จ
ref :
https://developer.android.com/kotlin/learn
https://blacklenspub.com/easy-fp-with-kotlin-th-4aa0178482bd