プログラマーの腕の見せどころ――Swiftの関数、引数、戻り値の基本的な書き方と使い方:初心者のためのSwiftで始めるプログラミング入門(6)(4/5 ページ)
本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、Swiftの関数の定義の仕方や呼び出し方、引数や戻り値の使い方や注意点などについて。
関数に「戻り値」を付ける
戻り値とは
ここまで解説してきた関数の使い方は、一方的にただ呼び出しているだけでした。これだけでもとても便利ではありますが、場合によっては関数の中でいろいろな処理をさせて、その結果をもらいたいときがあります。要するに、呼び出しに対する返事が欲しいときがあるというわけです。
関数は、このような関数の中で処理した結果の値を呼び出し元に返す機能を持っています。そして、このようにして返す値を「戻り値」または「返り値」と呼びます。
戻り値付き関数の定義の仕方
戻り値を持つ関数を定義するには、次にように書きます。
func 関数の名前() -> 戻り値の型 { // 実行する処理 return 戻り値 }
まず、「()」の後に半角スペースを空けてから「->」を書きます。その後に半角スペースを空けてから戻り値の型名を書きます。そして、関数の中のプログラムの最後の行に「return」と書き、半角スペースを空けてから関数の呼び出し元に返したい値を書きます。
戻り値付きの関数の呼び出し
まずは簡単なプログラムから書いてみましょう。
func 一日の秒数() -> Int { let 秒数 = 24 * 60 * 60 return 秒数 }
この関数は、一日の秒数を計算しています。その計算結果をInt型の値(整数値)として呼び出し元に返すようにしています。
この関数を呼び出すには、これまでと同じように書くだけです。
一日の秒数()
戻り値の受け取り方
しかし呼び出しただけでは、せっかく値を返してもらった意味がありません。次のように書くことで、呼び出した関数から返された値を定数(または定数)に代入することができます。
let 秒数 = 一日の秒数() println("一日は\(秒数)秒!")
なお、上記の関数の中の処理では「秒数」という定数に計算結果を代入してから返していますが、「return」の後に計算式をそのまま書くこともできます。この方が、短くまとまりますね。
func 一日の秒数() -> Int { return 24 * 60 * 60 }
戻り値付きの関数の間違った書き方
また、戻り値付きの関数を定義するとき、関数の中の処理の最後に必ず「return」と戻り値を書かなければいけません。そのため、次のような関数を定義するとエラーになります。
func 一日の秒数を表示() -> Int { let 秒数 = 24 * 60 * 60 println("一日は\(秒数)秒!") }
反対に、戻り値を返さない関数の中に「return」を書いてはいけません。
func 一日の秒数を表示() { let 秒数 = 24 * 60 * 60 return 秒数 }
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に対応】。