2016-03-25 9 views
1

「+ = 1を実行しても問題が解決されていません」:++は推奨されません - 私は言っていくつかの警告を持っています7.3へのXcodeをアップデートした後

を「++」推奨されません:それはスウィフト3で削除されます

警告が表示されるコードは、2つの配列をマージ機能である:

arr4.append(arr1[i++]) 

私はそれを変更しようとしている:

arr4.append(arr1[i += 1])

が、私はエラーが言ってます:

は、型の値を添字できないタイプ のインデックスを持つ '[[文字列]]' '()'

完全なコードは次のとおりです。

let arr1 = [["aaa","111"],["bbb","222"],["ccc","333"]] 
let arr2 = [["ddd","444"],["eee","555"],["fff","666"]] 

var arr4 = zip(arr1, arr2).reduce([]) { (newArr, p:(Array<String>, Array<String>)) -> [[String]] in 

    var arr = newArr 

    arr.append(p.0) 
    arr.append(p.1) 
    return arr 
} 

var i = arr4.count/2 
while i < arr1.count { 
    arr4.append(arr1[i++]) // WARNING 
} 

while i < arr2.count { 
    arr4.append(arr2[i++]) // WARNING 
} 
print(arr4) 

答えて

2

使用: - 手順が適切に曖昧さを減らすこと、スペルアウトされていることを確実にすること

arr4.append(arr1[i]) 
i += 1 

変更の動機は、読みやすさです。式a += 1の結果は、タイプvoidです。何かをしますが、何も評価しません。空のタプル()として表され、配列インデックスとして使用することはできません。

は(脇:+= 1もC.

int a = 3; 
    int b = a += 1; 
    NSLog(@"%d %d", a, b); 

++の直接の代替ではありません...同等b = a ++;とは異なる出力を生成します)

+0

ますか良い説明をありがとうございました!! – SNos

+0

はC++であり、目的はcです。 a + = 1は値を返します。あなたの答えは迅速ですか? – hasan83

+0

はい。スウィフトタグ付きの質問ですみません。セミコロンとすべてが省略されています。 Cの言及は、脇にサンドボックス化され、そのようなものとして明示的に言及されました。 - 含まれる「NSLog」は、最も可能性の高いスウィフト・オーディエンスがピックアップする手掛かりにもなります。 – Tommy

1

コード:

arr4.append(arr1[i]) 
i += 1 

あなたは、それを1行で行うことを強くお勧めします。あなたはすることができますが、それは醜く見えます:

arr4.append(arr1[(i += 1) - 1]) 

わかりません。試して。

関連する問題