18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swiftの関数とメソッド

Last updated at Posted at 2016-06-09

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. 変なところなどありましたらコメントください。

18
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?