LoginSignup
16
18

More than 5 years have passed since last update.

Swiftの外部引数名の省略関連まとめ

Last updated at Posted at 2015-07-22

外部引数名を指定する時に注意しなければならないタイミングが3つある。

1. イニシャライザ呼び出し時
2. インスタンスメソッド呼び出し時
3. メソッド呼び出し時

下記に、タイミング別で外部引数名の指定がどうなっているのか、ルールを記述する。

1. イニシャライザ呼び出し時

  • 外部引数名をすべて指定しなければならない。

  • 定義側に外部引数名が指定されていなかった場合、内部引数名を外部引数名として指定しなければならない。

  • 定義側で外部引数名を_で記述した場合、第2引数以降に外部引数名を指定しなくても良い。

class Person {
    var id: UInt
    var name: String
    var age: UInt8

    init( myId id: UInt, name: String, _ age: UInt8){
        self.id = id
        self.name = name
        self.age = age
    }
}

let person = Person( myId: 12345, name: "Taro", 20 )

2. インスタンスメソッド呼び出し時

  • メソッドの第2引数以降に外部引数名をつけないといけない。

  • 定義側に外部引数名が指定されていなかった場合、内部引数名を外部引数名として指定しなければならない。

  • 定義側で外部引数名を_で記述した場合、第2引数以降に外部引数名を指定しなくても良い。

class Person {
    var id: UInt
    var name: String
    var age: UInt8

    init( myId id: UInt, name: String, _ age: UInt8){
        self.id = id
        self.name = name
        self.age = age
    }

    func speak ( contents: String, toName to: String, when: String ){
        println("TO: \(to)")
        println("  \(contents)")
        println("@\(when)")
    }
}

let person = Person( myId: 12345, name: "Taro", 20 )
person.speak("Hello!", toName: "Kunio", when: "2015-07-22")

3. メソッド呼び出し時

  • メソッドの引数にデフォルト値が設定されているメソッドの引数に引数を渡す場合、必ず外部引数名を指定する必要がある。

  • 定義側に外部引数名が指定されていなかった場合、内部引数名を外部引数名として指定しなければならない。

func printName( firstName str1: String = "Taro", str2: String = "Sato" ){
    println( "\( str1 ) \( str2 )" )
}

printName( firstName: "Jiro" , str2: "Imada")
16
18
2

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
16
18