Swiftのメソッドの外部パラメータ名について

このエントリーをはてなブックマークに追加

公式本から引用です。

以下のようなクラスとメソッド定義があったとします。

class Counter {
  var count: Int = 0
  func incrementBy(amount: Int, numberOfTimes: Int) {
    count += amount * numberOfTimes
  }
}

incrementByにはamountとnumberOfTimesがありますが、デフォでSwiftでは第一引数であるamountはローカルパラメータ名として定義され、第二引数のnumberOfTimesはローカル&外部パラメータ名としても扱われます。だから下のように呼び出します。

let counter = Counter()
counter.incrementBy(5, numberOfTimes: 3)

ようするに普通の関数を下のように定義したのと一緒です。(#をつけることでローカルパラメータと同名の外部パラメータ

を生成)

func incrementBy(amount: Int, #numberOfTimes: Int) {
  count += amount * numberOfTimes
}

可読性の観点からデフォルトのままにしておくか、意図的に第一引数の外部パラメータ名も書いてあげていいのですが、外部パラメータを無くす方法もあります。下みたいに外部パラメータとして「_」を書いてあげればOK。けどこれは可読性の観点から非推奨。

class Counter {
  var count: Int = 0
  func incrementBy(amount: Int, _ numberOfTimes: Int) {
    count += amount * numberOfTimes
  }
}

let counter = Counter()
counter.incrementBy(5, 3)
// valid!

 

Written on June 4, 2014
このエントリーをはてなブックマークに追加