Thực đơn
Kotlin (ngôn ngữ lập trình) Cú phápKotlin nới lỏng các giới hạn của Java vốn chỉ cho phép phương thức và biến tĩnh (static) chỉ tồn tại trong thân hàm. Đối tượng và hàm tĩnh có thể được định nghĩa ở mức cao nhất (top level) của gói (package) mà không cần một mức của lớp dư thừa. Để tương thích với Java, Kotlin cung cấp chú thích JvmName
để đặc tả một tên lớp được sử dụng khi gói được xem từ một dự án Java. Ví dụ như @file:JvmName("JavaClassName")
.
Cũng như trong C và C++, điểm vào chính (entry point) của một chương trình Kotlin là một hàm tên "main", được truyền vào một mảng chứa bất cứ đối số dòng lệnh nào. Nội suy chuỗi kiểu Perl và Unix shell cũng được hỗ trợ, cũng như suy luận kiểu.
// Hello, World! examplefun main(args: Array<String>) { val scope = "World" println("Hello, $scope!")}
Tương tự như C#, Kotlin cho phép người dùng thêm các phương thức vào bất cứ lớp nào mà không cần phải tạo một lớp dẫn xuất từ lớp đó với các phương thức mới. Thay vào đó, Kotlin bổ sung khái niệm phương thức mở rộng (extension method) để cho phép bất cứ hàm nào có thể được "gắn" vào danh sách phương thức công khai (public) của bất cứ lớp nào mà không cần phải được chính thức khai báo bên trong lớp đó. Nói cách khác, phương thức mở rộng là một phương thức trợ giúp có quyền truy xuất tới các cả các giao diện công khai của lớp đó vốn có thể dùng để tạo nên giao diện công khai (public interface) mới cho lớp, và phương thức đó sẽ xuất hiện chính xác như một phương thức của lớp, xuất hiện như một phần của thanh tra hoàn tất mã (code completion inspection) của phương thức lớp. Ví dụ như:
package MyStringExtensions fun String.lastChar(): Char = get(length - 1) >>> println("Kotlin".lastChar())
Bằng cách đặt mã trên ở mức cao nhất của gói, lớp String (chuỗi) được mở rộng để thêm vào phương thức lastChar vốn không được bao gồm trong định nghĩa ban đầu của lớp String.
// Overloading '+' operator using an extension method operator fun Point.plus(other: Point): Point { return Point(x + other.x, y + other.y) } >>> val p1 = Point(10, 20) >>> val p2 = Point(30, 40) >>> println(p1 + p2) Point(x=40, y=60)
Kotlin cho phép các hàm cục bộ (local function) có thể được định nghĩa bên trong các hàm hoặc phương thức khác, gọi là hàm lồng nhau (nested function).
class User(val id: Int, val name: String, val address: String) fun saveUserToDb(user: User) { fun validate(user: User, value: String, fieldName: String) { if (value.isEmpty()) { throw IllegalArgumentException("Can't save user ${user.id}: empty $fieldName") } } validate(user, user.name, "Name") validate(user, user.address, "Address") // Save user to the database ... }
Anko là một thư viện được tạo riêng cho Kotlin để giúp xây dựng các ứng dụng giao diện người dùng cho Android.[16]
fun Activity.showAreYouSureAlert(process: () -> Unit) { alert( title = "Are you sure?", message = "Are you really sure?") { positiveButton("Yes") { process() } negativeButton("No") { cancel() } } }
$ kotlinc-jvmtype :help for help; :quit for quit>>> 2+24>>> println("Hello, World!")Hello, World!>>>
Thực đơn
Kotlin (ngôn ngữ lập trình) Cú phápLiên quan
Kotlin (ngôn ngữ lập trình) Kottinagar Kolinda Grabar-Kitarović Kothinallur Kottingbrunn Korlingen Kolinec Koplino Korlino Kolin, Tỉnh West PomeranianTài liệu tham khảo
WikiPedia: Kotlin (ngôn ngữ lập trình) https://adtmag.com/articles/2012/02/22/kotlin-goes... https://developer.android.com/kotlin/index.html https://github.com/JetBrains/kotlin-eclipse https://github.com/JetBrains/kotlin/releases/lates... https://github.com/Kotlin/anko https://www.infoworld.com/d/application-developmen... https://www.javaworld.com/article/2077265/core-jav... https://blog.jetbrains.com/kotlin/2011/08/why-jetb... https://blog.jetbrains.com/kotlin/2016/02/kotlin-1... https://blog.jetbrains.com/kotlin/2017/05/kotlin-o...