So sánh Swift với Kotlin
Tại sự kiện Google I/O năm 2017, Google đã ra thông báo Kotlin là ngôn ngữ lập trình được Android chính thức hỗ trợ. Điều này không có gì đáng ngạc nhiên đối với các developer Android và vấn đề chỉ là khi nào thì Java sẽ bị thay thế. Kotlin là ngôn ngữ đã "học hỏi" rất nhiều từ Swift - một ngôn ...
Tại sự kiện Google I/O năm 2017, Google đã ra thông báo Kotlin là ngôn ngữ lập trình được Android chính thức hỗ trợ. Điều này không có gì đáng ngạc nhiên đối với các developer Android và vấn đề chỉ là khi nào thì Java sẽ bị thay thế.
Kotlin là ngôn ngữ đã "học hỏi" rất nhiều từ Swift - một ngôn ngữ lập trình iOS phổ biến được Apple giới thiệu nhiều năm về trước. Cú pháp và một số khái niệm lập trình của Kotlin rất giống với Swift. Điều này giúp cho các mobile developer có thể dễ dàng tiếp cận, phát triển ứng dụng cho cả 2 nền tảng iOS và Android mà không cần tốn quá nhiều thời gian để làm quen với ngôn ngữ mới.
Bài viết này so sánh cú pháp của Swift với Kotlin và một số khái niệm khác nhau giữa 2 ngôn ngữ lập trình mobile "bậc cao" này.
Basic
Hello World
Swift print("Hello, world!")
Kotlin println("Hello, world!")
Variables and constants
Trong Swift, khai báo biến sử dụng keyword var, khai báo hằng số sử dụng let.
Swift var myVariable = 42 myVariable = 50 let myConstant = 42
Còn với Kotlin, khai báo biến cũng sử dụng var, còn hằng số là val.
Kotlin var myVariable = 42 myVariable = 50 val myConstant = 42
Explicit Types
Khai báo các kiểu dữ liệu tường minh trong Swift và Kotlin giống hệt nhau.
Swift let explicitDouble: Double = 70.0
Kotlin val explicitDouble: Double = 70.0
Type Coercion
Ép kiểu dữ liệu trong Swift vẫn phải tường minh dùng các constructor như String(), Int(), Double()...
Swift let label = "The awidth is " let awidth = 94 let awidthLabel = label + String(awidth)
Còn với Kotlin thì khá đơn giản.
Kotlin val label = "The awidth is " val awidth = 94 val awidthLabel = label + awidth
String Interpolation
Cú pháp chèn thêm giá trị của các biến, các hằng số, các phép tính vào trong string. Swift dùng ().
Swift let apples = 3 let oranges = 5 let fruitSummary = "I have (apples + oranges) pieces of fruit."
Kotlin dùng ${}.
Kotlin val apples = 3 val oranges = 5 val fruitSummary = "I have ${apples + oranges} pieces of fruit."
Range Operator
Với Swift, operator 0...10 nghĩa là khoảng từ 0 đến 10 - [0, 10]. Còn 0..<10 nghĩa là nửa khoảng từ 0 đến 10 - [0, 10).
Swift let names = ["Anna", "Alex", "Brian", "Jack"] let count = names.count for i in 0..<count { print("Person (i + 1) is called (names[i])") } // Person 1 is called Anna // Person 2 is called Alex // Person 3 is called Brian // Person 4 is called Jack
Trong Kotlin, để biểu diễn khoảng thì dùng 0..10 (2 dấu chấm). Nửa khoảng không gồm phần tử cuối là 0 until 10. Ngoài ra còn có downTo để đếm ngược và step 2 để nhảy cóc.
Kotlin val names = arrayOf("Anna", "Alex", "Brian", "Jack") val count = names.count() for (i in 0 until count) { println("Person ${i + 1} is called ${names[i]}") } // Person 1 is called Anna // Person 2 is called Alex // Person 3 is called Brian // Person 4 is called Jack
Collection
Array
Cách khai báo một mảng với các phần tử xác định trước trong Swift rất đơn giản.
Swift var shoppingList = ["catfish", "water", "tulips", "blue paint"] shoppingList[1] = "bottle of water"
Còn với Kotlin, sử dụng hàm arrayOf(<element...>).
Kotlin val shoppingList = arrayOf("catfish", "water", "tulips", "blue paint") shoppingList[1] = "bottle of water"
Dictionary vs Map
Dictionary trong Swift với kiểu [<Kiểu dữ liệu của key>: <Kiểu dữ liệu của value>].
Swift var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic", ] occupations["Jayne"] = "Public Relations"
Dictionary trong Kotlin được gọi là Map, dùng hàm mutableMapOf(<key> to <value>,...) để khởi tạo với các cặp key/value có sẵn.
Kotlin val occupations = mutableMapOf( "Malcolm" to "Captain", "Kaylee" to "Mechanic" ) occupations["Jayne"] = "Public Relations"
Empty Collection
Cú pháp tạo các array, dictionary/map trong Swift và Kotlin.
Swift let emptyArray = [String]() let emptyDictionary = [String: Float]()
Kotlin val emptyArray = arrayOf<String>() val emptyMap = mapOf<String, Float>()
Function
Function
Swift dùng keyword func. Kotlin dùng keyword fun