プログラマーの腕の見せどころ――Swiftの関数、引数、戻り値の基本的な書き方と使い方:初心者のためのSwiftで始めるプログラミング入門(6)(3/5 ページ)
本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、Swiftの関数の定義の仕方や呼び出し方、引数や戻り値の使い方や注意点などについて。
関数に「引数」を付ける
先ほど定義した関数は、何度呼び出しても全く同じ結果になります。しかし、場合によって少し処理を変えたいときがあります。このような場合は「引数」という機能を使います。
引数とは
「割合を出す関数」をあらためて見てみましょう。関数の中で「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.
関連記事
- 開発者向けiOS 9、WatchOS 2、Swift 2、Xcode 7の新機能と新しいApple Developer Programの参考情報まとめ
iOS 9、WatchOS 2、Swift 2、Xcode 7の新機能や、Apple Developer Programについて、その概要とアップルが公開している参考情報をまとめて紹介します。 - iOSアプリ開発でObjective-CからSwiftに移行するための手順、注意点まとめ〜言語仕様の違いは? 連携時の呼び出し方は?
開発生産性や品質を向上させたいiOSアプリ開発者のためにObjective-CからSwiftへ移行するメリットや手順、注意点など勘所をまとめて紹介します。 - アップル、新プログラミング言語「Swift」「iOS 8 SDK」「Xcode 6」のベータ版を発表
米アップルが新しいプログラミング言語「Swift」と開発ツール「iOS 8 SDK」「Xcode 6」のベータ版を発表。その特徴と注目ポイントを紹介。 - iOS 8 SDK、Xcode 6、Swift 1.0がGMに。Apple Pay機能の組み込み、TestFlight Beta Testingも利用可能
米アップルが2014年9月9日に発表した内容の中から、iOS 8 SDK、Xcode 6、Apple Watch、Swift 1.0などに関する開発者向けの情報をまとめてみる。 - Swiftでの変数の定義、Xcodeでのアウトレット接続、iOSシミュレーターへの画像素材追加
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、Xcodeでアウトレットを接続する方法、Swiftでの変数定義の仕方、iOSシミュレーターへ画像素材を追加する方法などを解説します。 - OptionalなどSwiftとObjective-Cの違いを意識してPhotos Frameworkを使う
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した写真の情報を「Photos Framework」の機能を使用して取り出し、写真の情報にひも付いた座標にピンを表示します。また、その過程でOptionalなどSwiftとObjective-Cの違いについて解説します。 - Swiftのカスタムクラスの作り方――プロトコル、サブクラス、イニシャライザー、タイププロパティメソッドのオーバーライド、デリゲートについて注釈の作成で学ぶ
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した地図上の「注釈」を写真のサムネイルに差し替える課程でSwiftのカスタムクラスの作成手順について解説します。 - iOS 8アプリ開発のこれまで&Swift 1.2への対応、プロパティオブザーバーとwillSetの基本的な使い方、セグエを使った画面遷移
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。最終回は、これまでの連載を振り返り、これまで作成したPhotoKitを使ったサンプルアプリの仕上げとしてセグエを使った画面遷移を実装の仕方や、プロパティオブザーバーとwillSetの基本的な使い方を解説する。 - 外から見るWWDC 2014キーノート――Swiftに感じるAppleの本気
WWDC常連のドリキンが今年もキーノートを斬ります! 今回はメディアとエンジニアとで、反応が真っ二つに分かれる内容となりました。その理由をエンジニア視点で解き明かしていきたいと思います。 - Excelでプログラム作成を始めるメリットとマクロの基本
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。初回は、そもそもプログラミングとは何か、Visual BasicとVBAとマクロの違い、マクロの作り方、保存/削除、セキュリティ設定などについて【Windows 10、Excel 2016に対応】。