Swift による iOS 開発入門

ホーム > Swift の基本 > 関数

関数

スポンサーリンク

ここでは Swift の関数 (function) について学びましょう。

関数は例えば、「半径を渡すと面積を返す」 といった特定の処理を行なうコードのまとまりです。

多くのプログラミング言語でサポートされているので、考え方はご存知の方も多いと思います。

関数

Swift では引数及び戻り値などは次のように書きます。

func 関数名 (引数1:引数1の型, ...) -> 戻り値の型 {
	return 戻り値
}

具体的には次のようになります。

func getArea ( r: Double ) -> Double {
	let pi = 3.14
	return pi * r * r
}

可変個引数

可変個引数をとる関数は次のように定義できます。

func myfunc ( nums: Int... ){
	for (index, val) in enumerate( nums ) {
		println("\(index) - \(val)")
	}
}

myfunc( 5, 6, 7 )

// 0 - 5
// 1 - 6
// 2 - 7

タプルを返す

戻り値の型としてはタプルを指定することも可能です。これによって、複数の値を一度に返すことが可能です。

func getEmployee( empID : Int ) -> ( name: String, age: Int) {
	switch empID {
	case 1000:
		return ( "Ichiro", 30 )
	default:
		return ( "Unknown", 0 )
	}
}

var p1 = getEmployee( 1000 )
println("\(p1.name) - \(p1.age)")

var p2 = getEmployee( 5 )
println("\(p2.name) - \(p2.age)")

// Ichiro - 30
// Unknown - 0

引数の外部名

これも Swift らしい機能です。引数の外向けの名前を指定することができます。引数の前にもうひとつ付いている名前が、呼び出し側で利用可能です。

func getArea( radius r : Double ) -> Double {
	let pi = 3.14
	return pi * r * r
}

var a = getArea( radius: 3 )

もし外部名と関数内部で使う名前が同じでよい場合は、次のように引数名にハッシュ (#) を付けます。

func getArea( #r : Double ) -> Double {
	let pi = 3.14
	return pi * r * r
}

var a = getArea( r : 3 )

参照 ~ inout 引数

Swift でも参照を渡すことができます。その場合、引数名に inout を指定します。inout 引数に値を渡すときは & を付けます。

func myfunc1 ( inout s : String ) {
	s = "I'm in myfunc1!"
}

var s = "Hello!"
myfunc1( &s )
println( "Now s = \(s)" )
// Now s = I'm in myfunc1!

関数を返す関数

Swift では関数を返す関数を定義することも可能です。

func f1( d : Double ) -> String {
	return "f1 \(d)"
}

func f2( d : Double ) -> String {
	return "f2 \(d)"
}

func f( i : Int ) -> (Double)-> String {
	switch i {
	case 1:
		return f1
	default:
		return f2
	}
}


var myfunc : (Double)->String

myfunc = f(1)
println( myfunc(1.0) )

myfunc = f(2)
println( myfunc(2.0) )
スポンサーリンク
ホーム > Swift の基本 > 関数