今日面白い現象に遭遇したのでメモ。
タイトルの通り、要素が1つのタプルはタプルとして扱われないようです。
let tuple1 = (key1: "value1") print(tuple1.dynamicType) // → String, 本来は(String)となるはず let tuple2 = (key1: "value1", key2: "Value2") print(tuple2.dynamicType) // → (String, String)
実際にタプルのメソッドを呼びだそうとしてもエラーが出ます。
let tuple1 = (key1: "value1") tuple1.key1 // 'String' does not have a member named 'key1'というエラーになる let tuple2 = (key1: "value1", key2: "Value2") tuple2.key1
それに関連してか、メソッドの引数には要素が1つでキー付きのタプルを引数にできないようです。
// Cannot create a single-element tuple with an element labelというエラーになる func method1(tuple: (key1: String)) {} // これはOK、tupleはString型になっている func method2(tuple: (String)) {}