メソッド
メソッドとは、簡単に言うとクラスの持つデータ処理の方法のことです。メソッドも、クラスの定義と同様に1ファイル内で表せます。
メソッドの定義
メソッドは「func」で定義します。戻り値のないメソッド/戻り値のあるメソッドでそれぞれ定義が異なります。メソッドの書式は次のようになります。
// 戻り値のないメソッド
func メソッド名( [[ラベル] 引数[:型],])
{
// 処理
}
// 戻り値のあるメソッド
func メソッド名( [[ラベル] 引数[:型],])->戻り値の型
{
// 処理
return 戻り値
}
初期化処理のinitメソッドのみ、funcの記述は不要です。初期化処理以外のメソッドでは、funcを記述しメソッドの定義であることを明記します。
ラベルと引数の型は省略できます。ラベルは、引数を名前付き引数として記述したいときに利用します。引数は連載第1回で説明した変数の定義と同じように指定します。戻り値のないメソッドの例を以下に示します。
// 縄張りと好物をセット
func setInfo(nawabari territory:String, koubutsu favorite:String)
{
Territory = territory;
Favorite = favorite;
}
戻り値のあるメソッドの場合は、戻り値の型を「->」で指定し、型に準じた値をretuen文で返します。
// 名前を返す
func getName()->String
{
return Name
}
// 年齢を返す
func getAge()->Int
{
return Age
}
型と異なる値は返すことができません。プログラム内に、メソッドで指定した型と異なる型を返す間違いがあると、実行前にXcodeがエラーのある行をハイライトします。
引数のラベルを省略する場合
メソッドの定義でラベルを省略できることは前項で触れました。ラベルの省略については、Appleのプログラムの観点から見ると、「ラベルと引数が同じ場合に、ラベルを省略できる」と考えられています。ラベルが省略されると、2つ目以降の変数ではラベルが省略されると引数名がラベルとなります。具体的には、次の例のようになります。
// 縄張りと好物をセット ラベルを省略した場合
func setInfo(territory:String, favorite:String)
{
Territory = territory;
Favorite = favorite;
}
// 縄張りと好物をセット
c.setInfo("公園", favorite: "カリカリ")
複数のメンバーで開発する場合等、最初の引数がないままだとプログラムの意味がわかりにくい場合もあります。プログラムの可読性を上げるために、最初の引数にも引数名をラベルとしてつけておくほうが便利です。そのような場合には、ラベルと引数が同じ場合にもラベルを残すという意味で、「#」を最初の引数の前につけておきます。
// 縄張りと好物をセット ラベルを省略しない場合
func setInfo(#territory:String, favorite:String)
{
Territory = territory;
Favorite = favorite;
}
// 縄張りと好物をセット c.setInfo(territory:"公園", favorite: "カリカリ")
上記のように「#」を最初の引数につけたメソッドでは、引数名をラベルとして利用できます。ただし、initメソッドだけは例外的に「#」をつけずに最初の引数名をラベルとして利用できます。
