swiftの関数とメソッドの違いについてのメモ。
たまに関数とメソッドの違いってなんだっけってなりますよね。
引数、処理、戻り値の書き方などは一緒ですが、メソッドは、インスタンスについて実行し、インスタンスのプロパティを操作するところが関数と違うようです。
#関数
関数は、関数です。
「function」の名の通り、「機能」 です。
これはまあ理解できますね。
// 二つの整数を足す関数(機能)
func plusWithNum(num1: Int, num2: Int) -> Int{
return num1 + num2
}
// 実行
plusWithNum(3, num2: 5)
#メソッド
問題はメソッドについてです。
メソッド(method)という単語を辞書で引いてみると〜「方法」や「手段」と訳されています。
つまり、メソッドは、関数と同じように戻り値を返すこともできますが、基本的にはインスタンスのプロパティを操作する方法(メソッド)として使うものだと推測されます。
// Scoreクラス
class Score {
var score: Int = 0 // クラスの変数(プロパティ)
// scoreを設定するメソッド
func setScoreWithPoint(point: Int){
score = point
}
// scoreを追加するメソッド
func addScoreWithPoint(point: Int){
score += point
}
// 値を返すメソッド
func plusWithNum(num: Int) -> Int{
return score + num
}
}
メソッドを実行するためには、インスタンスを作成して実行する。
let score = Score()
score.setScoreWithPoint(3)
score.addScoreWithPoint(6)
var num = score.plusWithNum(4)
メソッドは、インスタンスに関して実行するので、<インスタンス>.<メソッド> と書きます。
値を返すplusWithNum(_:)はどうでしょうか。クラスのプロパティを使っていますが、プロパティを変更はしていないので、メソッドとしては意図された使い方ではないと思われます。
こういう時は、var num = score.point + 4
とすればよいですね。
#結論
メソッドは、インスタンスのプロパティを操作するための関数。
P.S. 変なところなどありましたらコメントください。