Swift3.0 関数呼び出し時は引数名が必要になっている
これらの記事を読む限り、ラベルなしの場合は引数名は2つ目以降必要なようですが
func myFunc1(str1: String){ print("str1 = \(str1)") } myFunc1("hoge") // Missing argument label 'str1:' in call myFunc1(str1: "hoge") func myFunc2(str1: String, str2: String){ print("str1 = \(str1)") print("str2 = \(str2)") } myFunc2("hoge", str2:"fuga") // Missing argument label 'str1:' in call myFunc2(str1:"hoge", str2:"fuga")
1つ目の引数にも引数名が必要なようです。
ラベルありの場合は
func myFunc3(label1 str1: String){ print("str1 = \(str1)") } myFunc3("hoge") // Missing argument label 'label1:' in call myFunc3(label1: "hoge") func myFunc4(label1 str1: String, label2 str2: String){ print("str1 = \(str1)") print("str2 = \(str2)") } myFunc4("hoge", label2: "fuga") // Missing argument label 'label1:' in call myFunc4(label1:"hoge", label2:"fuga")
こちらも当然、ラベル名を指定する必要があります
ラベル名を指定するのが面倒という場合は
func myFunc4(_ str1: String, label2 str2: String){ print("str1 = \(str1)") print("str2 = \(str2)") } myFunc4("hoge", label2: "fuga")
このようにラベルにワイルドカードを使えば実現できるようです。
Swift3.0から、1つ目の引数にも引数名が必要になったみたいです。面倒にも感じるのでワイルドカードが使えるということを頭に入れておいてもいいかもしれない。