SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Objective-CユーザーのためのSwift入門

にゃんこなサンプルコードで学ぶSwiftのクラスとメソッド

Objective-CユーザーのためのSwift入門 第3回

メソッド

 メソッドとは、簡単に言うとクラスの持つデータ処理の方法のことです。メソッドも、クラスの定義と同様に1ファイル内で表せます。

メソッドの定義

 メソッドは「func」で定義します。戻り値のないメソッド/戻り値のあるメソッドでそれぞれ定義が異なります。メソッドの書式は次のようになります。

書式2 メソッドの定義
// 戻り値のないメソッド
func メソッド名( [[ラベル] 引数[:型],])
{
   // 処理
}

// 戻り値のあるメソッド
func メソッド名( [[ラベル] 引数[:型],])->戻り値の型
{
    // 処理
    return 戻り値
}

 初期化処理のinitメソッドのみ、funcの記述は不要です。初期化処理以外のメソッドでは、funcを記述しメソッドの定義であることを明記します。

 ラベルと引数の型は省略できます。ラベルは、引数を名前付き引数として記述したいときに利用します。引数は連載第1回で説明した変数の定義と同じように指定します。戻り値のないメソッドの例を以下に示します。

リスト5 戻り値のないメソッドの例(Cat.swift抜粋)
// 縄張りと好物をセット
func setInfo(nawabari territory:String, koubutsu favorite:String)
{
     Territory = territory;
     Favorite = favorite;
}

 戻り値のあるメソッドの場合は、戻り値の型を「->」で指定し、型に準じた値をretuen文で返します。

リスト6 戻り値のあるメソッドの例(Cat.swift抜粋)
// 名前を返す
func getName()->String
{
    return Name
}
// 年齢を返す
func getAge()->Int
{
    return Age
}

 型と異なる値は返すことができません。プログラム内に、メソッドで指定した型と異なる型を返す間違いがあると、実行前にXcodeがエラーのある行をハイライトします。

引数のラベルを省略する場合

 メソッドの定義でラベルを省略できることは前項で触れました。ラベルの省略については、Appleのプログラムの観点から見ると、「ラベルと引数が同じ場合に、ラベルを省略できる」と考えられています。ラベルが省略されると、2つ目以降の変数ではラベルが省略されると引数名がラベルとなります。具体的には、次の例のようになります。

リスト7 引数が2つあるメソッドの例(Cat.swift抜粋)
// 縄張りと好物をセット ラベルを省略した場合
func setInfo(territory:String, favorite:String)
{
    Territory = territory;
    Favorite = favorite;
}
リスト8 引数が2つあるメソッドの呼び出し(ViewController.swift抜粋)
// 縄張りと好物をセット
c.setInfo("公園", favorite: "カリカリ")

 複数のメンバーで開発する場合等、最初の引数がないままだとプログラムの意味がわかりにくい場合もあります。プログラムの可読性を上げるために、最初の引数にも引数名をラベルとしてつけておくほうが便利です。そのような場合には、ラベルと引数が同じ場合にもラベルを残すという意味で、「#」を最初の引数の前につけておきます。

リスト9 最初の引数にラベルを付ける例(Cat.swift抜粋)
// 縄張りと好物をセット ラベルを省略しない場合
func setInfo(#territory:String, favorite:String)
{
    Territory = territory;
    Favorite = favorite;
}
リスト10 最初の引数にラベルを付けるメソッドの呼び出し(ViewController.swift抜粋)
// 縄張りと好物をセット
c.setInfo(territory:"公園", favorite: "カリカリ")

 上記のように「#」を最初の引数につけたメソッドでは、引数名をラベルとして利用できます。ただし、initメソッドだけは例外的に「#」をつけずに最初の引数名をラベルとして利用できます。

次のページ
基本的なクラスの利用

この記事は参考になりましたか?

Objective-CユーザーのためのSwift入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8361 2015/01/15 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー