Swift

In-Outパラメータについて

More than 3 years have passed since last update.

Swiftの予約語として inout がある。良くわからなかったので覚え書き。

日本語で参照渡しと呼んで正しいのか不明であるが、パラメータを受ける関数側にて、参照渡しの場合にinoutを使用する。

そしてパラメータを呼ぶ側では、& を付ける。


値渡し.swift

func swapInt(var a:Int, var b:Int)

{
var tmp:Int
tmp = a
a = b
b = tmp
}

var x:Int = 2
var y:Int = 3

println("x:\(x)") //x:2
println("y:\(y)") //y:3

swapInt(x, y)

//値渡しなのでSwapされない
println("x:\(x)") //x:2
println("y:\(y)") //y:3



参照渡し.swift

func swapInt(inout a:Int, inout b:Int)

{
var tmp:Int
tmp = a
a = b
b = tmp
}

var x:Int = 2
var y:Int = 3

println("x:\(x)") //x:2
println("y:\(y)") //y:3

swapInt(&x, &y)

//参照渡しなのでSwapされている
println("x:\(x)") //x:3
println("y:\(y)") //y:2


私は基本的にJava系の土壌なので、C系に良くみられるhogehoge渡しには、とても疎く敬遠していたのであったが、Swiftであまり使わないと思うが復習になった。