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であまり使わないと思うが復習になった。