Những điều căn bản về lập trình Kotlin – AnonyHome
Cú pháp cơ bản trong lập trình Kotlin
Định nghĩa package trong Kotlin
Đặc tả package được đặt ở đầu của file source code
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">package</span> my.demo<br /><br /><span style="box-sizing: inherit; color: #c678dd;">import</span> java.util.*<br /><br /><span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// ...</span><br /></span> |
Không bắt buộc phải match thư mục và package: file source code có thể được đặt tuỳ tiện trong hệ thống file.
Định nghĩa function trong Kotlin
Function có 2 tham số kiểu
Int
và trả về kết quả kiểu Int
:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">sum</span><span style="box-sizing: inherit;">(a: <span style="box-sizing: inherit; color: #d19a66;">Int</span>, b: <span style="box-sizing: inherit; color: #d19a66;">Int</span>)</span></span>: <span style="box-sizing: inherit; color: #e6c07b;">Int</span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">return</span> a + b<br />}<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> print(<span style="box-sizing: inherit; color: #98c379;">"sum of 3 and 5 is "</span>)<br /> println(sum(<span style="box-sizing: inherit; color: #d19a66;">3</span>, <span style="box-sizing: inherit; color: #d19a66;">5</span>))<br />}<br />-----------<br />Kết quả: sum of <span style="box-sizing: inherit; color: #d19a66;">3</span> and <span style="box-sizing: inherit; color: #d19a66;">5</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">8</span><br /></span> |
Function có kiểu kết quả trả về được suy ra từ body biểu thức:
1 2 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">sum</span><span style="box-sizing: inherit;">(a: <span style="box-sizing: inherit; color: #d19a66;">Int</span>, b: <span style="box-sizing: inherit; color: #d19a66;">Int</span>)</span></span> = a + b<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"sum of 19 and 23 is <span style="box-sizing: inherit; color: #e06c75;">${sum(<span style="box-sizing: inherit; color: #d19a66;">19</span>, <span style="box-sizing: inherit; color: #d19a66;">23</span>)}</ span>"</span>)<br />}<br />----------<br />Kết quả: sum of <span style="box-sizing: inherit; color: #d19a66;">19</span> and <span style="box-sizing: inherit; color: #d19a66;">23</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">42</span><br /></span> |
Function trả về kết quả không có ý nghĩa:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">printSum</span><span style="box-sizing: inherit;">(a: <span style="box-sizing: inherit; color: #d19a66;">Int</span>, b: <span style="box-sizing: inherit; color: #d19a66;">Int</span>)</span></span>: <span style="box-sizing: inherit; color: #e6c07b;">Unit</span> {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"sum of <span style="box-sizing: inherit; color: #d19a66;">$a</span> and <span style="box-sizing: inherit; color: #d19a66;">$b</span> is <span style="box-sizing: inherit; color: #e06c75;">${a + b}</span>"</span>)<br />}<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> printSum(<span style="box-sizing: inherit; color: #d19a66;">-1</span>, <span style="box-sizing: inherit; color: #d19a66;">8</span>)<br />}<br />----------<br />Kết quả: sum of <span style="box-sizing: inherit; color: #d19a66;">-1</span> and <span style="box-sizing: inherit; color: #d19a66;">8</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">7</span><br /></span> |
Kiểu trả về
Unit
có thể được bỏ qua:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">printSum</span><span style="box-sizing: inherit;">(a: <span style="box-sizing: inherit; color: #d19a66;">Int</span>, b: <span style="box-sizing: inherit; color: #d19a66;">Int</span>)</span></span> {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"sum of <span style="box-sizing: inherit; color: #d19a66;">$a</span> and <span style="box-sizing: inherit; color: #d19a66;">$b</span> is <span style="box-sizing: inherit; color: #e06c75;">${a + b}</span>"</span>)<br />}<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> printSum(<span style="box-sizing: inherit; color: #d19a66;">-1</span>, <span style="box-sizing: inherit; color: #d19a66;">8</span>)<br />}<br />----------<br />Kết quả: sum of <span style="box-sizing: inherit; color: #d19a66;">-1</span> and <span style="box-sizing: inherit; color: #d19a66;">8</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">7</span><br /></span> |
Định nghĩa biến cục bộ (local) trong Kotlin
Biến local chỉ gán giá trị một lần(biến chỉ đọc):
1 2 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> a: <span style="box-sizing: inherit; color: #e6c07b;">Int</span> = <span style="box-sizing: inherit; color: #d19a66;">1</span> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// immediate assignment</span><br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> b = <span style="box-sizing: inherit; color: #d19a66;">2</span> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// `Int` type is inferred</span><br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> c: <span style="box-sizing: inherit; color: #e6c07b;">Int</span> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// Type required when no initializer is provided</span><br /> c = <span style="box-sizing: inherit; color: #d19a66;">3</span> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// deferred assignment</span><br /> println(<span style="box-sizing: inherit; color: #98c379;">"a = <span style="box-sizing: inherit; color: #d19a66;">$a</span>, b = <span style="box-sizing: inherit; color: #d19a66;">$b</span>, c = <span style="box-sizing: inherit; color: #d19a66;">$c</span>"</span>)<br />}<br />----------<br />Kết quả: a = <span style="box-sizing: inherit; color: #d19a66;">1</span>, b = <span style="box-sizing: inherit; color: #d19a66;"> 2</span>, c = <span style="box-sizing: inherit; color: #d19a66;">3</span><br /></span> |
Biến có thể thay đổi:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">var</span> x = <span style="box-sizing: inherit; color: #d19a66;">5</span> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// `Int` type is inferred</span><br /> x += <span style="box-sizing: inherit; color: #d19a66;">1</span><br /> println(<span style="box-sizing: inherit; color: #98c379;">"x = <span style="box-sizing: inherit; color: #d19a66;">$x</span>"</span>)<br />}<br />----------<br />Kết quả: x = <span style="box-sizing: inherit; color: #d19a66;">6</span><br /></span> |
Comment trong Kotlin
Giống như Java và JavaScript, Kotlin hỗ trợ các kiểu end-of-line và block comments.
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// This is an end-of-line comment</span><br /><br /><span style="box-sizing: inherit; color: #5c6370; font-style: italic;">/* This is a block comment<br /> on multiple lines. */</span><br /></span> |
Không giống Java, các block comment trong Kotlin có thể lồng nhau.
Sử dụng String template trong Kotlin
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">var</span> a = <span style="box-sizing: inherit; color: #d19a66;">1</span><br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// simple name in template:</span><br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> s1 = <span style="box-sizing: inherit; color: #98c379;">"a is <span style="box-sizing: inherit; color: #d19a66;">$a</span>"</span> <br /><br /> a = <span style="box-sizing: inherit; color: #d19a66;">2</span><br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// arbitrary expression in template:</span><br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> s2 = <span style="box-sizing: inherit; color: #98c379;">"<span style="box-sizing: inherit; color: #e06c75;">${s1.replace("is", "was")}</span>, but now is <span style="box-sizing: inherit; color: #d19a66;">$a</span>"</span><br /> println(s2)<br />}<br />----------<br />Kết quả: a was <span style="box-sizing: inherit; color: #d19a66;">1</span>, but now <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">2</span><br /></span> |
Sử dụng các biểu thức có điều kiện trong Kotlin
1 2 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">maxOf</span><span style="box-sizing: inherit;">(a: <span style="box-sizing: inherit; color: #d19a66;">Int</span>, b: <span style="box-sizing: inherit; color: #d19a66;">Int</span>)</span></span>: <span style="box-sizing: inherit; color: #e6c07b;">Int</span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">if</span> (a > b) {<br /> <span style="box-sizing: inherit; color: #c678dd;">return</span> a<br /> } <span style="box-sizing: inherit; color: #c678dd;">else</span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">return</span> b<br /> }<br />}<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> { <br /> println(<span style="box-sizing: inherit; color: #98c379;">"max of 0 and 42 is <span style="box-sizing: inherit; color: #e06c75;">${maxOf(<span style="box-sizing: inherit; color: #d19a66;">0</span>, <span style="box-sizing: inherit; color: #d19a66;">42</span>)}</span>"</span>)<br />}<br />----------<br />Kết quả: max of <span style="box-sizing: inherit; color: #d19a66;">0</span> and <span style="box-sizing: inherit; color: #d19a66;">42</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">42</span><br /></span> |
Sử dụng
if
như một biểu thức:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">maxOf</span><span style="box-sizing: inherit;">(a: <span style="box-sizing: inherit; color: #d19a66;">Int</span>, b: <span style="box-sizing: inherit; color: #d19a66;">Int</span>)</span></span> = <span style="box-sizing: inherit; color: #c678dd;">if</span> (a > b) a <span style="box-sizing: inherit; color: #c678dd;">else</span> b<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"max of 0 and 42 is <span style="box-sizing: inherit; color: #e06c75;">${maxOf(<span style="box-sizing: inherit; color: #d19a66;">0</span>, <span style="box-sizing: inherit; color: #d19a66;">42</span>)}</span>"</span>)<br />}<br />----------<br />Kết quả: max of <span style="box-sizing: inherit; color: #d19a66;">0</span> and <span style="box-sizing: inherit; color: #d19a66;">42</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">42</span><br /></span> |
Sử dụng các giá trị nullable
và check null
Trong kotlin, một tham chiếu phải được đánh dấu là
nullable
khi giá trị null
là có thể. Trả về giá trị null
nếu str
không giữ một số nguyên:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">parseInt</span><span style="box-sizing: inherit;">(str: <span style="box-sizing: inherit; color: #d19a66;">String</span>)</span></span>: <span style="box-sizing: inherit; color: #e6c07b;">Int</span>? {<br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// ...</span><br />}<br /></span> |
Sử dụng function trả về giá trị nullable:
1 2 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">parseInt</span><span style="box-sizing: inherit;">(str: <span style="box-sizing: inherit; color: #d19a66;">String</span>)</span></span>: <span style="box-sizing: inherit; color: #e6c07b;">Int</span>? {<br /> <span style="box-sizing: inherit; color: #c678dd;">return</span> str.toIntOrNull()<br />}<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">printProduct</span><span style="box-sizing: inherit;">(arg1: <span style="box-sizing: inherit; color: #d19a66;">String</span>, arg2: <span style="box-sizing: inherit; color: #d19a66;">String</span>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> x = parseInt(arg1)<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> y = parseInt(arg2)<br /><br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// Using `x * y` yields error because they may hold nulls.</span><br /> <span style="box-sizing: inherit; color: #c678dd;">if</span> (x != <span style="box-sizing: inherit; color: #56b6c2;">null</span> && y != <span style="box-sizing: inherit; color: #56b6c2;">null</span>) {<br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// x and y are automatically ca st to non-nullable after null check</span><br /> println(x * y)<br /> }<br /> <span style="box-sizing: inherit; color: #c678dd;">else</span> {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"either '<span style="box-sizing: inherit; color: #d19a66;">$arg1</span>' or '<span style="box-sizing: inherit; color: #d19a66;">$arg2</span>' is not a number"</span>)<br /> } <br />}<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> printProduct(<span style="box-sizing: inherit; color: #98c379;">"6"</span>, <span style="box-sizing: inherit; color: #98c379;">"7"</span>)<br /> printProduct(<span style="box-sizing: inherit; color: #98c379;">"a"</span>, <span style="box-sizing: inherit; color: #98c379;">"7"</span>)<br /> printProduct(<span style="box-sizing: inherit; color: #98c379;">"a"</span>, <span style="box-sizing: inherit; color: #98c379;">"b"</span>)<br />}<br />----------<br />Kết quả: <br /><span style="box-sizing: inherit; color: #d19a66;">42</span><br />either <span style="box-sizing: inherit; color: #98c379;">'a'</span> or <span style="box-sizing: inherit; color: #98c379;">'7'</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> not a number<br />either <span style="box-sizing: inherit; color: #98c379;">'a'</span> or <span style="box-sizing: inherit; color: #98c379;">'b'</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> not a number<br /></span> |
Kiểm tra và tự động ép kiểu
Toán tử
is
kiểm tra nếu một biểu thức là một thể hiện của một kiểu. Nếu một biến địa phương loại chỉ đọc hay một thuộc tính được kiểm tra cho một kiểu cụ thể thì không cần ép kiểu một cách rõ ràng:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">getStringLength</span><span style="box-sizing: inherit;">(obj: <span style="box-sizing: inherit; color: #d19a66;">Any</span>)</span></span>: <span style="box-sizing: inherit; color: #e6c07b;">Int</span>? {<br /> <span style="box-sizing: inherit; color: #c678dd;">if</span> (obj <span style="box-sizing: inherit; color: #c678dd;">is</span> String) {<br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// `obj` is automatically cast to `String` in this branch</span><br /> <span style="box-sizing: inherit; color: #c678dd;">return</span> obj.length<br /> }<br /><br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// `obj` is still of type `Any` outside of the type-checked branch</span><br /> <span style="box-sizing: inherit; color: #c678dd;">return</span> <span style="box-sizing: inherit; color: #56b6c2;">null</span><br />}<br /><br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">printLength</span><span style="box-sizing: inherit;">(obj: <span style="box-sizing: inherit; color: #d19a66;">Any</span>)</span></span> {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"'<span style="box-sizing: inherit; color: #d19a66;">$obj</span>' string length is <span style="box-sizing: inherit; color: #e06c75;">${getStringLength(obj) ?: "... err, not a string"}</span> "</span>)<br /> }<br /> printLength(<span style="box-sizing: inherit; color: #98c379;">"Incomprehensibilities"</span>)<br /> printLength(<span style="box-sizing: inherit; color: #d19a66;">1000</span>)<br /> printLength(listOf(Any()))<br />}<br />----------<br />Kết quả: <br /><span style="box-sizing: inherit; color: #98c379;">'Incomprehensibilities'</span> string length <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #d19a66;">21</span> <br /><span style="box-sizing: inherit; color: #98c379;">'1000'</span> string length <span style="box-sizing: inherit; color: #c678dd;">is</span> ... err, not a string <br /><span style="box-sizing: inherit; color: #98c379;">'[java.lang.Object@6b884d57]'</span> string length <span style="box-sizing: inherit; color: #c678dd;">is</span> ... err, not a string <br /></span> |
Sử dụng vòng lặp for
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> items = listOf(<span style="box-sizing: inherit; color: #98c379;">"apple"</span>, <span style="box-sizing: inherit; color: #98c379;">"banana"</span>, <span style="box-sizing: inherit; color: #98c379;">"kiwi"</span>)<br /> <span style="box-sizing: inherit; color: #c678dd;">for</span> (item <span style="box-sizing: inherit; color: #c678dd;">in</span> items) {<br /> println(item)<br /> }<br />}<br />----------<br />Kết quả: <br />apple<br />banana<br />kiwi<br /></span> |
hoặc:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> items = listOf(<span style="box-sizing: inherit; color: #98c379;">"apple"</span>, <span style="box-sizing: inherit; color: #98c379;">"banana"</span>, <span style="box-sizing: inherit; color: #98c379;">"kiwi"</span>)<br /> <span style="box-sizing: inherit; color: #c678dd;">for</span> (index <span style="box-sizing: inherit; color: #c678dd;">in</span> items.indices) {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"item at <span style="box-sizing: inherit; color: #d19a66;">$index</span> is <span style="box-sizing: inherit; color: #e06c75;">${items[index]}</span>"</span>)<br /> }<br />}<br />----------<br />Kết quả: <br />item at <span style="box-sizing: inherit; color: #d19a66;">0</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> apple<br />item at <span style="box-sizing: inherit; color: #d19a66;">1</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> banana<br />item at <span style="box-sizing: inherit; color: #d19a66;">2</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> kiwi<br /></span> |
Sử dụng vòng lặp while
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> items = listOf(<span style="box-sizing: inherit; color: #98c379;">"apple"</span>, <span style="box-sizing: inherit; color: #98c379;">"banana"</span>, <span style="box-sizing: inherit; color: #98c379;">"kiwi"</span>)<br /> <span style="box-sizing: inherit; color: #c678dd;">var</span> index = <span style="box-sizing: inherit; color: #d19a66;">0</span><br /> <span style="box-sizing: inherit; color: #c678dd;">while</span> (index < items.size) {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"item at <span style="box-sizing: inherit; color: #d19a66;">$index</span> is <span style="box-sizing: inherit; color: #e06c75;">${items[index]}</span>"</span>)<br /> index++<br /> }<br />}<br />----------<br />Kết quả: <br />item at <span style="box-sizing: inherit; color: #d19a66;">0</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> apple<br />item at <span style="box-sizing: inherit; color: #d19a66;">1</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> banana<br />item at <span style="box-sizing: inherit; color: #d19a66;">2</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> kiwi<br /></span> |
Sử dụng biểu thức when
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">describe</span><span style="box-sizing: inherit;">(obj: <span style="box-sizing: inherit; color: #d19a66;">Any</span>)</span></span>: String =<br /><span style="box-sizing: inherit; color: #c678dd;">when</span> (obj) {<br /> <span style="box-sizing: inherit; color: #d19a66;">1</span> -> <span style="box-sizing: inherit; color: #98c379;">"One"</span><br /> <span style="box-sizing: inherit; color: #98c379;">"Hello"</span> -> <span style="box-sizing: inherit; color: #98c379;">"Greeting"</span><br /> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #e6c07b;">Long</span> -> <span style="box-sizing: inherit; color: #98c379;">"Long"</span><br /> !<span style="box-sizing: inherit; color: #c678dd;">is</span> String -> <span style="box-sizing: inherit; color: #98c379;">"Not a string"</span><br /> <span style="box-sizing: inherit; color: #c678dd;">else</span> -> <span style="box-sizing: inherit; color: #98c379;">"Unknown"</span><br />}<br /><br /><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> println(describe(<span style="box-sizing: inherit; color: #d19a66;">1</span>))<br /> println(describe(<span style="box-sizing: inherit; color: #98c379;">"Hello"</span>))<br /> println(describe(<span style="box-sizing: inherit; color: #d19a66;">1000</span>L))<br /> println(describe(<span style="box-sizing: inherit; color: #d19a66;">2</span>))<br /> println(describe(<span style="box-sizing: inherit; color: #98c379;">"other"</span>))<br />}<br />----------<br />Kết quả: <br />One<br />Greeting<br /><span style="box-sizing: inherit; color: #e6c07b;">Long</span><br />Not a string<br />Unknown<br /></span> |
Sử dụng ranger (dãy ..
)
Để kiểm tra một số có thuộc một dãy, sử dụng toán tử
in
:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> x = <span style="box-sizing: inherit; color: #d19a66;">10</span><br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> y = <span style="box-sizing: inherit; color: #d19a66;">9</span><br /> <span style="box-sizing: inherit; color: #c678dd;">if</span> (x <span style="box-sizing: inherit; color: #c678dd;">in</span> <span style="box-sizing: inherit; color: #d19a66;">1.</span>.y+<span style="box-sizing: inherit; color: #d19a66;">1</span>) {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"fits in range"</span>)<br /> }<br />}<br />----------<br />Kết quả: fits <span style="box-sizing: inherit; color: #c678dd;">in</span> range<br /></span> |
Kiểm tra một số nằm ngoài dãy:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> list = listOf(<span style="box-sizing: inherit; color: #98c379;">"a"</span>, <span style="box-sizing: inherit; color: #98c379;">"b"</span>, <span style="box-sizing: inherit; color: #98c379;">"c"</span>)<br /><br /> <span style="box-sizing: inherit; color: #c678dd;">if</span> (<span style="box-sizing: inherit; color: #d19a66;">-1</span> !<span style="box-sizing: inherit; color: #c678dd;">in</span> <span style="box-sizing: inherit; color: #d19a66;">0.</span>.list.lastIndex) {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"-1 is out of range"</span>)<br /> }<br /> <span style="box-sizing: inherit; color: #c678dd;">if</span> (list.size !<span style="box-sizing: inherit; color: #c678dd;">in</span> list.indices) {<br /> println(<span style="box-sizing: inherit; color: #98c379;">"list size is out of valid list indices range too"</span>)<br /> }<br />}<br />----------<br />Kết quả: <br /><span style="box-sizing: inherit; color: #d19a66;">-1</span> <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #c678dd;">out</span> of range<br />list size <span style="box-sizing: inherit; color: #c678dd;">is</span> <span style="box-sizing: inherit; color: #c678dd;">out</span> of valid list indices range too<br /></span> |
Sử dụng collection
Iterating trên một collection:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> items = listOf(<span style="box-sizing: inherit; color: #98c379;">"apple"</span>, <span style="box-sizing: inherit; color: #98c379;">"banana"</span>, <span style="box-sizing: inherit; color: #98c379;">"kiwi"</span>)<br /> <span style="box-sizing: inherit; color: #c678dd;">for</span> (item <span style="box-sizing: inherit; color: #c678dd;">in</span> items) {<br /> println(item)<br /> }<br />}<br />----------<br />Kết quả: <br />apple<br />banana<br />kiwi<br /></span> |
Kiểm tra nếu một collection có chứa một đối tượng, sử dụng toán tử
in
:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> items = setOf(<span style="box-sizing: inherit; color: #98c379;">"apple"</span>, <span style="box-sizing: inherit; color: #98c379;">"banana"</span>, <span style="box-sizing: inherit; color: #98c379;">"kiwi"</span>)<br /> <span style="box-sizing: inherit; color: #c678dd;">when</span> {<br /> <span style="box-sizing: inherit; color: #98c379;">"orange"</span> <span style="box-sizing: inherit; color: #c678dd;">in</span> items -> println(<span style="box-sizing: inherit; color: #98c379;">"juicy"</span>)<br /> <span style="box-sizing: inherit; color: #98c379;">"apple"</span> <span style="box-sizing: inherit; color: #c678dd;">in</span> items -> println(<span style="box-sizing: inherit; color: #98c379;">"apple is fine too"</span>)<br /> }<br />}<br />----------<br />Kết quả: apple <span style="box-sizing: inherit; color: #c678dd;">is</span> fine too<br /></span> |
Sử dụng biểu thức lamda để filter và map collection:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">main</span><span style="box-sizing: inherit;">(args: <span style="box-sizing: inherit; color: #d19a66;">Array</span><<span style="box-sizing: inherit; color: #d19a66;">String</span>>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> fruits = listOf(<span style="box-sizing: inherit; color: #98c379;">"banana"</span>, <span style="box-sizing: inherit; color: #98c379;">"avocado"</span>, <span style="box-sizing: inherit; color: #98c379;">"apple"</span>, <span style="box-sizing: inherit; color: #98c379;">"kiwi"</span>)<br /> fruits<br /> .filter { it.startsWith(<span style="box-sizing: inherit; color: #98c379;">"a"</span>) }<br /> .sortedBy { it }<br /> .map { it.toUpperCase() }<br /> .forEach { println(it) }<br />}<br />----------<br />Kết quả:<br />APPLE<br />AVOCADO<br /></span> |
Idioms
Tạo các DTOs (POJOs/POCOs)
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">data</span> <span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">class</span> <span style="box-sizing: inherit; color: #e6c07b;">Customer</span></span>(<span style="box-sizing: inherit; color: #c678dd;">val</span> name: String, <span style="box-sizing: inherit; color: #c678dd;">val</span> email: String)<br /></span> |
cung cấp một class
Customer
với các function sau:- getters (và setters trong trường hợp các biến
var
) cho tất cả các thuộc tính equals()
hashCode()
toString()
copy()
component1()
,component2()
, .. cho tất cả các thuộc tính
Giá trị mặc định cho các tham số của function
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">foo</span><span style="box-sizing: inherit;">(a: <span style="box-sizing: inherit; color: #d19a66;">Int</span> = <span style="box-sizing: inherit; color: #d19a66;">0</span>, b: <span style="box-sizing: inherit; color: #d19a66;">String</span> = <span style="box-sizing: inherit; color: #98c379;">""</span>)</span></span> { ... }<br /></span> |
Lọc một danh sách
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">val</span> positives = list.filter { x -> x > <span style="box-sizing: inherit; color: #d19a66;">0</span> }<br /></span> |
hoặc cách khác ngắn gọn hơn:
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">val</span> positives = list.filter { it > <span style="box-sizing: inherit; color: #d19a66;">0</span> }<br /></span> |
String Interpolation
1 |
<span style="font-family: Arial, Helvetica, sans-serif;">println(<span style="box-sizing: inherit; color: #98c379;">"Name <span style="box-sizing: inherit; color: #d19a66;">$name</span>"</span>)<br /></span> |
Check các thể hiện
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">when</span> (x) {<br /> <span style="box-sizing: inherit; color: #c678dd;">is</span> Foo -> ...<br /> <span style="box-sizing: inherit; color: #c678dd;">is</span> Bar -> ...<br /> <span style="box-sizing: inherit; color: #c678dd;">else</span> -> ...<br />}<br /></span> |
Thuộc tính lazy
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">val</span> p: String <span style="box-sizing: inherit; color: #c678dd;">by</span> lazy {<br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// compute the string</span><br />}<br /></span> |
Mở rộng function
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> String.<span style="box-sizing: inherit; color: #61aeee;">spaceToCamelCase</span><span style="box-sizing: inherit;">()</span></span> { ... }<br /><br /><span style="box-sizing: inherit; color: #98c379;">"Convert this to camelcase"</span>.spaceToCamelCase()<br /></span> |
Tạo một singleton
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">object</span> Resource {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> name = <span style="box-sizing: inherit; color: #98c379;">"Name"</span><br />}<br /></span> |
Check null ngắn gọn
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit; color: #c678dd;">val</span> files = File(<span style="box-sizing: inherit; color: #98c379;">"Test"</span>).listFiles()<br /><br />println(files?.size)<br /></span> |
Biểu thức try/catch
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">test</span><span style="box-sizing: inherit;">()</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> result = <span style="box-sizing: inherit; color: #c678dd;">try</span> {<br /> count()<br /> } <span style="box-sizing: inherit; color: #c678dd;">catch</span> (e: ArithmeticException) {<br /> <span style="box-sizing: inherit; color: #c678dd;">throw</span> IllegalStateException(e)<br /> }<br /><br /> <span style="box-sizing: inherit; color: #5c6370; font-style: italic;">// Working with result</span><br />}<br /></span> |
Biểu thức if
1 |
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="box-sizing: inherit;"><span style="box-sizing: inherit; color: #c678dd;">fun</span> <span style="box-sizing: inherit; color: #61aeee;">foo</span><span style="box-sizing: inherit;">(param: <span style="box-sizing: inherit; color: #d19a66;">Int</span>)</span></span> {<br /> <span style="box-sizing: inherit; color: #c678dd;">val</span> result = <span style="box-sizing: inherit; color: #c678dd;">if</span> (param == <span style="box-sizing: inherit; color: #d19a66;">1</span>) {<br /> <span style="box-sizing: inherit; color: #98c379;">"one"</span><br /> } <span style="box-sizing: inherit; color: #c678dd;">else</span> <span style="box-sizing: inherit; color: #c678dd;">if</span> (param == <span style="box-sizing: inherit; color: #d19a66;">2</span>) {<br /> <span style="box-sizing: inherit; color: #98c379;">"two"</span><br /> } <span style="box-sizing: inherit; color: #c678dd;">else</span> {<br /> <span style="box-sizing: inherit; color: #98c379;">"three"</span><br /> }<br />}<br /></span></code><div><br /><h2 style="border-bottom: 1px solid rgb(219, 227, 232); box-sizing: inherit; color: black; font-size: 1.75rem; line-height: 1.1; margin: 1.7rem 0px 0.6rem; padding-bottom: 0.5rem; white-space: normal;"><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br />Kết luận</span></h2><br /><div style="box-sizing: inherit; color: #0b1a33; font-size: 16px; letter-spacing: -0.003em; line-height: 1.65; margin-bottom: 0.5em; white-space: normal; word-wrap: break-word;"><br /><span style="font-family: Arial, Helvetica, sans-serif;">Trên đây là những điều cơ bản về cú pháp và các idiom của lập trình Kotlin. Hy vọng sẽ giúp các bạn tiếp cận, làm quen với ngôn ngữ lập trình mới này một cách căn bản và sơ khai nhất. </span></div><br /><div style="box-sizing: inherit; color: #0b1a33; font-size: 16px; letter-spacing: -0.003em; line-height: 1.65; margin-bottom: 0.5em; white-space: normal; word-wrap: break-word;"><br /><span style="font-family: Arial, Helvetica, sans-serif;">Chúc các bạn thành công. Đừng quên theo dõi AnonyHome để cập nhật các bài viết mới nhé!<br /></span></div><br /></div><br /><span style="font-family: menlo, monaco, consolas, liberation mono, courier new, monospace;"><br /></span> |