# Kotlin學習

var => 宣告變數

val => 宣告常數

宣告可以只宣告型態但不預設值，或是設定預設值會自動推導型態，或是同時設定型態和預設值。

```
var a1: Int //設定預設值會自動推導型態
var a2 = 1 //只宣告型態但不預設值
var a3: Int = 1 //同時設定型態和預設值
```

$ => 以變數取代

```
var s1 = "abc"
print("name is $s1")
```

字串內運算要用大括號

```
var i1 = 1
var i2 = 2
print("sum is ${i1 + i2}")
```

以下為宣告各種型態array的方法

```
var iArray = intArrayOf(1, 2, 3)
var fArray = floatArrayOf(1.0f, 2.0f, 3.0f)
var bArray = booleanArrayOf(true, false, true)
var cArray = charArrayOf('a', 'b', 'c')
```

foreach走訪迴圈 => 元素 in 陣列/迴圈

foreach迴圈中取得值 => 因為透過陣列去找某index屬於運算行為，所以要用大括號

```
for(i in iArray.indices)
{
    println("${iArray[i]}")
}
```

foreach的累加 - 逐次加

```
for(i in 1...100){
    sum += i
}
println(sum)
```

foreach的累加 - 設定累加step(遞增)

```
//2 + 4 + 6 + 8 + 10
for(i in 2...10 step 2){
    sum += i
}
println(sum)
```

foreach的累減 - 設定累減step(遞減)

```
//10 8 6 4 2
for(i in 10 down to 2 step 2){
    print(sum + "")
}

```

foreach界線 - until => 只會走到9

```
//1 2 3 4 5 6 7 8 9 
for(item in 1 until 10)
{
    print("$item")
}
```

## 條件判斷

if

```
var a1 = 1
var a2 = 2
var a3 = if(a1 < a2) a1 else a2
```

when(Jave的switch), else在裡面類似default

```
when(x)
{
    1-> //do something
    2 -> //do something
    else -> //do something 
}
```

in和!in可以表示在某範圍裡面

```
when(x)
{
    in 1..10 -> //do something
    !in 1..10 -> //do something
    else -> //do something
}
```

is和is!可以判斷是否為某型態

```
val hasPrefix = when (x) {
    is String -> x.startsWith("prefix")
    else -> false
}
```

##
