
この世でいちばんわかりやすいiPhoneアプリ開発のおはなし【メソッドの基本】
関数と構造体について知っておくと、このページの理解が深まります。関数は、こちらのページで説明しています。構造体は、こちらのページで説明しています。
インスタンスに備わる機能
定数および変数と同様に、型に関数を定義することもできます。 型に定義された関数は、インスタンスに備わる機能として呼び出すことができます。
struct Planet {
func description() {
print("Planets in Our Solar System are eight.")
}
}
型に定義された関数を メソッド といいます。 インスタンスのメソッドは、プロパティへのアクセスと同様に、ドットシンタックスで呼び出します。
var earth = Planet()
var mars = Planet()
earth.description() // Prints Planets in Our Solar System are eight.
mars.description() // Prints Planets in Our Solar System are eight.
上のコードは、地球と火星のインスタンスからdescription()メソッドを呼び出しています。 ただし、メソッドを実行しても同じ結果に違いはありません。
型のボディでは、selfキーワードを使って「自身のインスタンス」を参照できます。 description()メソッドが「インスタンスごとに正しい説明文」を出力できるように、Planet型をカスタムしましょう。
struct Planet {
var name = ""
var diameter = 0
func description() {
print("The \(self.name) has a diameter of \(self.diameter) km. ")
}
}
上のコードは、selfキーワードで参照するインスタンスのプロパティを利用することで、メソッドがインスタンス固有の実行結果を出力します。
各インスタンスのプロパティ値を更新してから、メソッドを呼び出します。
earth.name = "Earth"
earth.diameter = 12756
mars.name = "Mars"
mars.diameter = 6779
earth.description()
mars.description()
description()メソッドを呼び出すと、地球と火星に関する説明がコンソールに出力されます。 なお、関数と同様に、インスタンスのメソッドもパラメータを受け取ったり、値を返すことができます。