/**
 * 方法的定義, a, b為變數名
 * fun 方法名(變數名: 變數型別): 返回值型別
 */
fun sum(a: Int, b: Int): Int {
    return a + b
}

/**
 * 當表示式作為函式體的時候, 可以省去返回值型別
 * 由函式自己推斷
 */
fun sum1(a: Int, b: Int) = a + b

/**
 * 當不需要返回值型別的時候可以宣告為Unit, 也可以省略
 */
fun printSum(a: Int, b: Int):Unit {
    println(a + b)
}
fun printSum2(a: Int, b: Int) {
    println(a + b)
}


/**
 * 可變引數的定義
 * 由vararg修飾, 如下, 可以是任意個數的的int值作為引數
 */
fun vars(vararg v: Int) {
    // 迴圈取輸入的引數, 並進行輸出
    for (vt in v) {
        println(vt)
    }
}

// 常量用val修飾, 可以宣告型別, 也可以不宣告型別
val a = "sdf"
val b : Int = 0
// 變數用var修飾, 可以宣告型別, 也可以不宣告型別
var d = 5