fun main(args: Array<String>) { println("Hello, World!") }
常量 | 變量 | 函數(有返回值) | 函數(無返回值) | |
---|---|---|---|---|
Kotlin | val i = 10 val i: Int = 10 |
var i = 10 var i: Int = 10 |
fun f(n: Int): Int {return n + 1} fun f(n: Int): Int = n + 1 fun f(n: Int) = n + 1 |
fun f(n: Int): Unit {println(n)} fun f(n: Int) {println(n)} fun f(n: Int): Unit = println(n) fun f(n: Int) = println(n) |
Swift | let i = 10 let i: Int = 10 |
var i = 10 var i: Int = 10 |
func f(n: Int) -> Int {return n + 1} | func f(n: Int) -> () {print(n)} func f(n: Int) -> Void {print(n)} func f(n: Int) {print(n)} |
字符串模板/字符串插值 | 多行字符串 | |
---|---|---|
Kotlin | val x = 10; val y = 20 val s = "x=$x, y=${y + 1}" |
val price = """ ${'$'}9.99 """ |
Swift | let x = 10, y = 20 let s = "x=\(x), y=\(y + 1)" |
var price = """ $9.99 """ |
C# | int x = 10, y = 20; var s = $"x={x}, y={y + 1}"; |
var price = @" $9.99 " |
字符串的值 | x=10, y=21 | <空行> $9.99 <空行> |
Kotlin | Swift | 輸出 |
---|---|---|
for (i in 1..4) print(i) | for i in 1...4 {print(i, terminator: "")} | 1234 |
for (i in 4..1) print(i) | // for i in 4...1 {print(i, terminator: "")} // error | 空字符串 |
for (i in (1..4).reversed()) print(i) | for i in (1...4).reversed() {print(i, terminator: "")} | 4321 |
for (i in 4 downTo 1) print(i) | for i in stride(from: 4, through: 1, by: -1) {print(i, terminator: "")} for i in stride(from: 4, to: 0, by: -1) {print(i, terminator: "")} |
4321 |
for (i in 1..4 step 2) print(i) | for i in stride(from: 1, through: 4, by: 2) {print(i, terminator: "")} for i in stride(from: 1, to: 4, by: 2) {print(i, terminator: "")} |
13 |
for (i in 4 downTo 1 step 2) print(i) | for i in stride(from: 4, through: 1, by: -2) {print(i, terminator: "")} for i in stride(from: 4, to: 1, by: -2) {print(i, terminator: "")} |
42 |
for (i in 1 until 10) print(i) | for i in 1..<10 {print(i, terminator: "")} | 123456789 |
val x = 3 if (x in 1..10) println(x) if (x !in 1..10) println(x) |
let x = 3 if case 1...10 = x {print(x)} if 1...10 ~= x {print(x)} if (1...10).contains(x) {print(x)} if !(1...10).contains(x) {print(x)} |
3 |
結構相等/值相等 | 引用相等 | |
---|---|---|
Kotlin | a == b a != b |
a === b a !== b |
Swift | a == b a != b |
a === b a !== b |
Kotlin語言中的控制流語句有:數組
val a = 3; val b = 4 val m1: Int if (a < b) m1 = a else m1 = b val m2 = if (a < b) a else b val m3 = if (a < b) {println("a"); a} else {println("b"); b}
fun Int.isOdd() = this % 2 == 1 fun Int.isEven() = this % 2 == 0 val x = 3 when { x.isOdd() -> print("x is odd") x.isEven() -> print("x is even") else -> print("x is funny") }
fun describe(obj: Any): String = when (obj) { 1 -> "One" 2, 3 -> "Two or Three" in 4..6 -> "Four to Six" "Hello" -> "Greeting" is Long -> "Long" !is String -> "Not a string" else -> "Unknown" } println(describe(1)); // One println(describe(2)); // Two or Three println(describe(4)); // Four to Six println(describe(7)); // Not a string println(describe(9L)); // Long println(describe(10.0)); // Not a string println(describe("abc")); // Unknown
fun outside() { var a = 1 fun inside() { a++; } inside(); // a==2 }
fun add(a: Int = 1, b: Int = 2) = a + b println(add()); // 3 println(add(3)); // 5 println(add(b = 3)); // 4
變長參數 | |
---|---|
Kotlin | fun avg(vararg numbers: Double): Double {} |
Swift | func avg(numbers: Double...) -> Double {} |
C# | double Avg(params double[] numbers) {} |
Java | double avg(double... numbers) {} |
函數的類型(有返回值) | 函數的類型(沒有返回值) | |
---|---|---|
Kotlin | (Int, Int) -> Boolean | (Int, Int) -> Unit |
Swift | (Int, Int) -> Bool | (Int, Int) -> Void |
C# | Func<int, int, bool> | Action<int, int> |