連載
» 2015年09月10日 05時00分 公開

プログラマーの腕の見せどころ――Swiftの関数、引数、戻り値の基本的な書き方と使い方初心者のためのSwiftで始めるプログラミング入門(6)(3/5 ページ)

[諏訪悠紀,アンダースコア]

関数に「引数」を付ける

 先ほど定義した関数は、何度呼び出しても全く同じ結果になります。しかし、場合によって少し処理を変えたいときがあります。このような場合は「引数」という機能を使います。

引数とは

 「割合を出す関数」をあらためて見てみましょう。関数の中で「50.0」や「30.0」といった値をそのまま計算式に使っています。そのため、この関数では「30.0が50.0の何パーセントを占めているか」という計算しかできません。

func 割合を出す関数() {
    let 割合の値 = 30.0 / 50.0 * 100
    println("割合は\(割合の値)%です")
}

 そこで、関数には呼び出すときに値を渡すように定義できます。この渡す値のことを「引数」と呼びます。関数に引数を付けることで「この値を使って関数を実行してください」と命令できます。

引数付きの関数のイメージ

引数付き関数の定義の仕方

 引数は、次のように定義します。

func 関数の名前(引数名: 引数の型名) {
    // 実行する処理
}
引数付きの関数の定義

 引数は関数名の後の「()」の中に定義します。始めに引数名を書き、続けて「:」を書きます。その後に半角スペースを空けてから引数の型名を書きます。こうすることで「指定された型の値を渡して呼び出す関数」を作ることができます。なお、引数は関数の中では定数として扱われます(※)。

※引数を変数で扱う方法もありますが、ここでは取り扱いません。

引数付きの関数の呼び出し

 まずは簡単なプログラムから書いてみましょう。

func あいさつ(名前: String) {
    println("こんにちは、\(名前)さん!")
}

 この関数は、引数としてString型の「名前」を定義しています。この「名前」は関数の中では定数として扱うことができるので、この定数を「"こんにちは、\(名前)さん!"」といったように文字列に混ぜています。

 この関数を呼び出すには、次のように書きます。

あいさつ("太郎")
引数付きの関数の呼び出し

 引数がない場合は「割合を出す関数()」といったように関数名の後に「()」を付けていただけでしたが、今回は「("太郎")」といったように「()」の中に「"太郎"」という文字列を入れています。このように、関数を呼び出すときに引数を渡すには「()」の中に渡したい値を入れます。

引数ありの関数で値を渡さないと……

 なお、引数を定義した関数を呼び出す場合は、必ず値を渡さなければいけません。ですので、次のように書くことはできません。

あいさつ()
引数付きの関数の呼び出しのエラー

引数を複数、定義する

 また引数は、一つだけではなく複数、定義できます。複数個定義する場合は引数を「,」でつないでいきます。

func 関数の名前(引数【1】の名前: 引数【1】の型, 引数【2】の名前: 引数【2】の型) {
    // 実行する処理
}

 さて、今度は先ほどの「割合を出す関数」の一部を引数として切り出してみましょう。「割合を出す関数」を次のように書き換えてください。

func 割合を出す関数(比べる値: Double, 合計の値: Double) {
    let 割合の値 = 比べる値 / 合計の値 * 100.0
    println("割合は\(割合の値)%です")
}

 割合を出すために必要な、合計の値と比べる値をそれぞれ引数として切り出しました。このように関数を定義することで、何らかの割合を出したいときに自由な値を指定できるようになります。例えば、次のように呼び出します。

割合を出す関数(25.0, 120.0)
引数を切り出した「割合を出す関数」の呼び出し

 割合を出す関数の中で実行される結果は、引数によって変化します。いろいろな値に書き換えて、どのような結果になるか試してみてください。

コラム「printlnも関数の一つ」

 これまでの連載でよく使用していた「println」も関数の一つです。「println」は「文字列を結果画面に表示する機能」であると説明していましたが、その実体は「文字列を結果画面に表示するプログラムをひとまとまりにした関数」です。

 引数を学んだ今なら理解できると思いますが、「println」は引数付きの関数です。関数の中では引数として渡されたString型の値(文字列)を使って、特定の文字列を結果画面に表示するプログラムが動作しています。

println("こんにちは!")

 Swiftでは「println」以外にも、標準でさまざまな関数が用意されています。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。