Kotlin/関数

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

関数[編集]

グローバル変数[編集]

main() 関数のブロックの外を、仮に「グローバル領域」とします。 グローバル領域で、変数(グローバル変数)を宣言する事が出来ます。 グローバル変数は、main関数の関数で自由に参照でき、宣言などせずに前方参照ができます。

コード例
var i : Int = 20

fun main() {
    println(i)
    println(j) // グローバル変数は前方参照が許されます。
}

var j : Int = 42
実行結果
20
42

関数定義[編集]

Kotlinの関数はfunキーワードで宣言されます。

関数定義と呼出しの例
fun power(n : Int) : Int {
    return n * n
}

fun main(args: Array<String>) {
    var i : Int = 10
        
    println(power(i))
}
実行結果
100
整数の仮引数を1つとり、整数の値を返す関数 power() を定義しています。
main() の中で power(i) と実引数を変数 i として呼出しています。
関数定義の構文
fun 関数名(仮引数リスト) : 戻値型 {
    式・・・・
    return 戻値式
}
関数呼出しの構文
関数名(実引数リスト)

引数はイミュータブル[編集]

kotlinの関数の引数で宣言された変数は、val 宣言された変数と同じくイミュータブルです。そのため、下記のように代入しようとしても、エラーとなりコンパイルできません。

関数の引数に代入する例(コンパイルエラーになります)
fun paramAssin(i: Int) : Int {
    i = 0
    println(i)
    return 1
}

fun main() {
    var i : Int = 10
    
    i = paramAssin(i)
    println(i)
}
コンパイルエラー
Main.kt:2:5: error: val cannot be reassigned
    i = 0
    ^

ローカル変数[編集]

ある関数の中で、変数(ローカル変数)を宣言することができます。 ローカル変数は、関数をぬけると参照することができなくなります。これを「ローカル変数のスコープは宣言された関数」といいます。

ローカル変数の例
fun sample() {
    var i : Int = 40
    i = i + 5 
    println(i)
}

fun main() {
    var i : Int = 10
    
    sample()
    println(i)
}
実行結果
45
10

この様に、sample()関数の中の i は、main関数の i とは、名前が同じだけの別のインスタンスです。