#はじめに
今回はswiftにおける関数の定義方法について書いて行きます!
関数は初めて触ると、どの様にデータが流れているのか
よくわかりませんよね!僕も最初はそうでした!
なのでここでは、基礎的な定義とともに
引数や戻り値なんかについても覚えて、
データの流れをしっかり掴みましょう!
##関数とは
関数(function)とは、
簡潔に言うと**「特定の処理を行うためのまとまり」**です。
他の言語でも用いられていることが多いので、
他の言語を学習したことのある方はすでにご存知かと思います。
##関数の定義
書式はこんな感じ、、、
func 関数名(引数名1:引数1の型, 引数名2:引数2の型, ...)-> 戻り値の型{
return //戻り値
}
定義の中にある引数というのは、**「関数に渡す値」**のことで
渡す値は、その後に書くコードの中で指定します。
具体例はこんな感じ、、、
func test(test1:Int, test2:Int)-> Int{
// 関数で行う処理
var num = 100
return num + test1 - test2 //戻り値
}
// 関数の呼び出し
print(test(test1:10, test2:100)) // 引数
最後の「print(test(test1:10, test2:100))」で
関数testに「test1:10, test2:100」という値を渡し、関数で処理された
データが戻ってきて(これを戻り値という)表出されている。
##可変個引数
一つの引数で複数の値を渡す場合。
具体例はこんな感じ、、、
func test ( num: Int... ){
//.enumerated()は列挙型
for (i, num) in num.enumerated() {
print(num)
print( "\(i) - \(num)" )
}
}
test( num:5, 6, 7 )
// 結果
ー> 5
0 - 5
6
1 - 6
7
2 - 7
こうすることで、引数で複数の値を渡すことができる。
##引数の外部名
swiftでは、引数の関数の外での名前を決めることができる。
具体例はこんな感じ、、、
// 標準形
func getArea( radius r : Double ) -> Double {
let pi = 3.14
return pi * r * r
}
var a = getArea( radius: 3 )
print( a )
// 省略形
func getArea( _ r : Double ) -> Double {
let pi = 3.14
return pi * r * r
}
var a = getArea( 3 )
print( a )
( radius r : Double )
の様に、
(外の引数名 中の引数名:データの型)
の形を作ることができる。
また、関数の外での引数名は、( _ r : Double )
の様に
アンダースコアを記入することで省略できる。
##タプルを返す関数
swiftでは、関数は戻り値をタプルで返すこともできる。
####*タプルとは、
複数の変数をまとめ上げたり、
ひとつの変数に簡単にわかりやすい意味を与えたりするもので、
()で括って指定する。例:(name:String, age:Int)
具体例はこんな感じ、、、
func group(ID:Int) -> (name:String, age:Int) { //戻り値がタプル
switch ID {
case 1000:
return ( "Ichiro", 30 )
default:
return ( "Unknown", 0 )
}
}
var p1 = group( ID: 1000 )
print( "\(p1.name) - \(p1.age)" )
var p2 = group( ID: 5 )
print( "\(p2.name) - \(p2.age)" )
// 結果
ー> Ichiro - 30
Unknown - 0
##inoutによる参照渡し
swiftでは、関数を定義する際に( msg : inout String )
の様に
データ型の前にinout
をつけ、引数を設定する際に( msg: &s )
の様に
引数の値の前に&
をつけると参照渡すを行うことができる。
####*参照渡しとは
通常の引数は、関数外の変数の値をコピーして渡す値渡しを行うため、
関数外の変数の値に変化はない。
しかし参照渡しの場合は、関数ないで変数の値を変更すると、
その変更を関数外にある元の変数と共有することになる。
具体例はこんな感じ、、、
func myfunc ( msg : inout String ) {
msg = "Hello World!"
}
var s = "Hello!"
print( "s = \(s)" )
myfunc( msg: &s )
print( "s = \(s)" )
print(s)
// 結果
ー> s = Hello!
s = Hello World!
Hello World! // 変数が関数での変更を共有している
#これまで
今回は関数の定義について書いて行きました。
swift初級で使用するのは、この位ではないかと思います。
学習が進めばさらにいろんな表記や手法が出てくると思うので、
その都度追加していこうと思います!
ここまでで、swift学習記も#4になり、
基礎知識もあらかたついた様な気もするので、
これからはアプリを開発しながらの学習をやって行きます!