読者です 読者をやめる 読者になる 読者になる

うさがにっき

読書感想文とプログラムのこと書いてきます

関数について

概要

swiftの関数について概要

詳細

関数の基本

関数には外部で呼び出す際の引数名を指定できる
返り値は -> で表す

// 関数には関数外部での名前を設定できる、ここではwithMessage
func say(name: String, withMessage message: String) ->String {
    return message + ", " + name + "!"
}

say("taro", withMessage: "Hey")

関数にはデフォルト値を設定することもできる

// 関数には引数にデフォルト値を設定できる
func say(name: String, message: String = "Hello") ->String {
    return message + ", " + name + "!"
}

say("taro")

可変長引数を引数として受け取ることもできる、可変長引数は配列として渡される

func say(names: String...) ->String {
    var message = "Hello"
    
    for name in names {
        message += ", " + name
    }
    
    return message + "!"
}

say("taro")
say("taro","jiro","saburo")

引数は定数なので代入できない

これはエラーとなる

func say(name: String) ->String
{
    name="jiro"
    return "Hello, " + name + "!"
}

引数に再代入したい場合Bには引数名の前にvarを加える

func say(var name: String) ->String
{
    name="jiro"
    return "Hello, " + name + "!"
}

inoutで関数外の変数を書き換える

通常の関数の使い方では値渡しとなるため呼び出し元の変数を書き換えられない

func swap(var a: String, var b: String) {
    let temp = a;
    a = b;
    b = temp
}

var fruitsA = "Apple"
var fruitsB = "Orange"
swap(fruitsA, fruitsB)
println(fruitsA

これは引数にinoutをつけて、パラメータに&をつけることにより参照渡しになり呼び出し元の値を変更できる

// inoutのときはvarはいらない
func swap(inout a: String, inout b: String) {
    let temp = a;
    a = b;
    b = temp
}

var fruitsA = "Apple"
var fruitsB = "Orange"
// パラメータに&をつける
swap(&fruitsA, &fruitsB)
println(fruitsA)
広告を非表示にする