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