Swift-functions
Swift-関数
関数は、特定のタスクを実行するためにまとめられた一連のステートメントです。 Swift 4の関数は、単純なC関数のように単純なものから、Objective C言語の関数のように複雑なものまであります。 関数呼び出し内でローカルおよびグローバルのパラメーター値を渡すことができます。
- 関数宣言-コンパイラーに関数の名前、戻り値の型、およびパラメーターについて通知します。
- 関数の定義-関数の実際の本体を提供します。
Swift 4の関数には、パラメーター型とその戻り値の型が含まれています。
関数定義
Swift 4では、関数は「func」キーワードによって定義されます。 関数が新しく定義されると、関数への入力「パラメーター」として1つまたは複数の値を取り、本体の関数を処理し、値を出力「戻り型」として関数に返します。
すべての関数には関数名があり、関数が実行するタスクを説明しています。 関数を使用するには、その関数をその名前で「呼び出し」、関数のパラメーターのタイプに一致する入力値(引数)を渡します。 関数パラメーターは「タプル」とも呼ばれます。
関数の引数は、常に関数のパラメーターリストと同じ順序で指定する必要があり、戻り値の後には→が続きます。
構文
次のコードを見てください。 学生の名前は、関数 'student’内で宣言された文字列データ型として宣言され、関数が呼び出されると、学生の名前が返されます。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
関数を呼び出す
たとえば、関数名が「display」の関数が整数データ型を保持する引数「no1」で初期化される数値を表示することを検討するために、「display」と呼ばれる関数を定義したとします。 次に、引数 'no1’が引数 'a’に割り当てられ、以降は同じデータ型の整数を指します。 これで、引数 'a’が関数に返されます。 ここで、display()関数は整数値を保持し、関数が呼び出されるたびに整数値を返します。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
パラメータと戻り値
Swift 4は、単純な値から複雑な値まで、柔軟な関数パラメーターとその戻り値を提供します。 CおよびObjective Cの関数と同様に、Swift 4の関数もいくつかの形式を取ります。
パラメータ付き関数
関数にアクセスするには、そのパラメーター値を関数の本体に渡します。 関数内でタプルとして単一から複数のパラメーター値を渡すことができます。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
パラメータなしの関数
パラメータのない関数もあります。
構文
以下は、パラメータなしの関数を持つ例です-
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
戻り値を持つ関数
関数は、文字列、整数、および浮動小数点データ型の値を戻り値の型として返すためにも使用されます。 与えられた配列の最大数と最小数を見つけるために、「ls」は大小の整数データ型で宣言されています。
配列は整数値を保持するために初期化されます。 次に、配列が処理され、配列内のすべての値が読み取られ、前の値と比較されます。 値が前の値よりも小さい場合は「small」引数に格納され、それ以外の場合は「large」引数に格納され、関数を呼び出して値が返されます。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
戻り値のない関数
一部の関数は、戻り値なしで関数内で宣言された引数を持つ場合があります。 次のプログラムは、 a および b をsum()関数の引数として宣言します。 関数自体の内部で、引数 a および b の値は、関数呼び出しsum()を呼び出すことで渡され、その値が出力されるため、戻り値が削除されます。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
オプションの戻り値型を持つ関数
Swift 4は、安全対策を導入することで問題を取り除くための「オプション」機能を導入しています。 例えば、関数値が整数として返されるタイプを宣言しているが、関数が文字列値またはnil値を返すとどうなるかを考えてみましょう。 その場合、コンパイラはエラー値を返します。 これらの問題を取り除くために「オプション」が導入されています。
オプションの関数は、「値」と「nil」の2つの形式を取ります。 キーの予約文字「?」とともに「オプション」に言及します。タプルが値を返すか、nil値を返すかを確認します。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
「オプション」は、「nil」値またはガベージ値をチェックするために使用されるため、デバッグに多くの時間を消費し、ユーザーにとってコードを効率的かつ読みやすくします。
関数ローカルと外部パラメーター名
ローカルパラメータ名
ローカルパラメータ名は、関数内でのみアクセスされます。
ここで、 func サンプル引数番号は、関数sample()によって内部的にアクセスされるため、内部変数として宣言されます。 ここで、「番号」はローカル変数として宣言されていますが、変数への参照は次のステートメントで関数の外部で行われます-
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
外部パラメーター名
外部パラメーター名を使用すると、目的をより明確にするために関数パラメーターに名前を付けることができます。 以下の例では、2つの関数パラメータに名前を付けて、その関数を次のように呼び出すことができます-
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
可変パラメータ
複数の引数を使用して関数を定義する場合、メンバーを「変数」パラメーターとして宣言できます。 パラメーターは、パラメーター名の後に(…)によって可変引数として指定できます。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
定数、変数、I/Oパラメーター
デフォルトでは、関数はパラメーターを「定数」と見なしますが、ユーザーは関数の引数を変数として宣言することもできます。 「let」キーワードを使用して定数パラメーターを宣言し、変数パラメーターを「var」キーワードで定義することはすでに説明しました。
Swift 4のI/Oパラメーターは、関数呼び出し後に値が変更されてもパラメーター値を保持する機能を提供します。 関数パラメーター定義の最初に、メンバー値を保持するために「inout」キーワードが宣言されます。
値は関数に「in」で渡され、その値は関数本体によってアクセスおよび変更され、元の引数を変更するために関数の「out」に戻されるため、キーワード「inout」を派生させます。
変数は、値だけが関数の内外で変更されるため、in-outパラメーターの引数としてのみ渡されます。 したがって、文字列とリテラルを入出力パラメータとして宣言する必要はありません。 変数名の前の「&」は、引数を入出力パラメーターに渡していることを示します。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
関数の種類とその使用法
各パラメーターは、入力パラメーターを考慮して特定の機能に従い、目的の結果を出力します。
以下は例です-
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
ここでは、関数は整数データ型として2つの引数 no1 および no2 で初期化され、その戻り値の型も 'int’として宣言されています
ここでは、関数は string データ型として宣言されています。
関数には void データ型もあり、そのような関数は何も返しません。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
上記の関数は、引数も戻り値もないvoid関数として宣言されています。
関数型を使用する
関数は、最初に整数、フロート、または文字列型の引数で渡され、次に定数または変数として関数に渡されます。これについては以下で説明します。
ここで、sumは 'a’および 'b’整数変数を持つ関数名であり、関数名追加の変数として宣言されています。 これ以降、加算関数と合計関数の両方に、整数データ型として宣言された同じ数の引数があり、参照として整数値も返します。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
パラメータ型および戻り値型としての関数型
関数自体をパラメーター型として別の関数に渡すこともできます。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-
入れ子関数
ネストされた関数は、内部関数を呼び出すことにより外部関数を呼び出す機能を提供します。
プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-