Swiftでは、関数の引数名は信じられないほど重要です.
なぜなら,引数には内部引数と外部引数( _ アンダーバー)が存在していて,それらを理解しないままドキュメントだったり他の人のプログラムをみようとすると訳のわからないことになってしまいます.
本記事では,下記の内容を解説します.
- 普通の関数からの脱却方法
- 内部・外部引数の実際の使い方
- Swiftにおける _ (アンダーバー)をマスターする方法
にとろん
その中で私がつまずいたところや自分で調べて理解したところなどを紹介していきます.
Swiftは進化を続けていてSwiftの前進であったObjective-Cから新しい考え方を取り入れて,_(アンダーバー)を使用して引数を記述しなくても良い書き方ができるようになりました.
今回はその書き方について優しく説明します.
目次
普通の関数からの脱却方法
まず最初に普通の関数を宣言します.
この時点でわからないという方は,前回関数についての記事を書いているので参考にしてください.
関数の3つの定義 ~Learn Swift for Beginners~この引数を実際に内部引数と外部引数を宣言して宣言してみます.
実際のコードがこちら
func myFunc(parameter internalParameter: String){
print(internalParameter)
}
このようにただの関数から初めに外部パラメーター(引数)を宣言後,内部引数を宣言します.
使い方
使い方は簡単で外部引数を呼び出す際に使うだけです.
func myFunc(parameter internalParameter: String){
print(internalParameter)
}
myFunc(parameter: "にとろん")
おめでとうございます!普通の関数からの脱却の成功です!
また,引数は複数の引数を宣言することも可能です.
func myFunc(name n: String, age a: Int){
print("My name is \(n),\(a) years old.")
}
myFunc(name: "にとろん", age: 21)
ルールのまとめ
この1つのルールさえ覚えておけば大丈夫!!
内部引数と外部引数の使い方は以上です.
実は,外部引数は関数を呼び出したときだけ使用されて内部引数に値が渡されます.
つまり外部引数は関数の中に入ることはできません.関数の門番としてしか存在価値がないのです.(かわいそうに..🤦🏻♂️🤦🏻♂️)
逆にいうと,普通の関数は,関数の中も外も自由に行き来することができるといった引数になっています.
ここまでが内部・外部引数の導入とルールの説明でした.
内部・外部引数の実際の使い方
これだけみてもメリットが感じられていないあなたに!
にとろん
Swift _ アンダーバーの使い方
関数を宣言する際に1つしか引数が無い時など,引数名を省略できる場合があります.
例えば,名前を取得するprintName関数を宣言したとします.
func printName(name:String){
print("My name is \(name)")
}
printName(name:"にとろん")
//My name is hiro
printNameという関数名を見れば,名前を引数名に入れることは想像がつきます.
この時内部・外部引数を使用します.
省略の方法
省略の方法は外部引数に _を使用するだけです.
外部引数は内部引数より先に宣言するのでこのようになります.
func printName(_ name:String){
print("My name is \(name)")
}
使用した結果
printName("にとろん")
//My name is hiro
引数名をまったく使用せずに関数を呼び出すことができました.
また,内部・外部引数を使用することで,print→名前を→”にとろん”
このように読みやすくなったと思います.
最初は内部・外部引数を使用せずに定義をしておいてあとで使うのも一つの手です.
Swiftにおける _ (アンダーバー)をマスターする方法
外部引数は、関数を呼び出すときに使用して,
内部引数名は、引数の値を使用するときに使用します.
「この関数は引数がひとつだから省略しても大丈夫だな」と思ったら必要に応じて後から外部引数 _ (アンダーバー)を追加してみてください!
引数名を使わず代わりに値を渡すだけで関数を呼び出すことができるとコードの可読性が上がります!
さて次は,Closureについて学んでみてください!
0から学ぶClosure ~Learn Swift for Beginners~