関数
目次>
よくある関数みたい
func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting }
引数
ラベルなしでもよい。
引数がない場合
func sayHello(){
}
引数がある場合
func sayHello(personName: String) { }
引数と返り値がある場合
func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting }
ラベル名と引数が同じ名称なら # を頭につけてやる func sayHello(#name: String, #age: Int) -> Int {}
ラベル:型で指定。複数ある場合は , でつなぐ 引数なしの場合は( ) (personName: String) (start: Int, end: Int) ( )
外部引数名?
外部に出す名前と別に関数内部で使う名前をつけることができる
ショートハンド外部引数名?
外部引数名と同じ名前をつけたい場合は引数名の先頭にに#をつける (#string: String, #characterToFind: Character)
デフォルトの引数値
デフォルトの値を指定できる (s1: String, s2: String, joiner: String = " ")
可変の引数
...を型の後につける (numbers: Double...)
固定と可変の引数
デフォルトでは引数は固定値。可変にしたい場合はラベルの前にvarをつける (var string: String, count: Int, pad: Character)
In-Out引数
引数としても、返り値としても使うような場合? ラベルの前にinoutをつける (inout a: Int, inout b: Int)
func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA }
var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt)
返り値
-> 返り値の型 で指定 返り値なしの場合は->はいらない。
-> String
複数の値を返すことができる。これは便利。 -> (vowels: Int, consonants: Int, others: Int)
関数タイプ
同じ引数、同じ返り値を持つ関数を変数に入れることができる? 他の関数の引数にも使うことができるようだ 返り値にも使うことができるようだ