"呼叫中的额外参数"使用zip()迭代多个数组时出错

时间:2017-03-20 02:49:39

标签: arrays swift loops

我尝试迭代多个数组,然后将所有内容放入另一个数组中。 这是我要上课的课程:

class Place {

var names = [String]()
var messages = [String]()
var latidudes = [Double]()
var longitudes = [Double]()

var locations = [CLLocationCoordinate2D]()
}

这是我的职责:

private func placesArrayLoop() {

let CoffeeShopNames = ["aCoffee","bCoffee", "cCoffee"]
let messages = ["message0", "message1", "message2"]
let latitudes = [40.232320, 40.232321, 40.232322]
let longitudes = [-95.388069, -95.388068, 95.388067]

for (name, message, latitude, longitude) in zip(CoffeeShopNames, messages, latitudes, longitudes) {
    let place = Place()
    place.names.append(name)
    place.messages.append(message)
    place.latitudes.append(latitude)
    place.longitudes.append(longitude)

    }
}

它给了我错误,"呼叫中的额外参数指向zip数组行中的纬度。我假设它是swift 3的新语法错误,但我已经环顾四周,无法找到解决方法。但是下面的代码很有用......

let strArr1 = ["Some1", "Some2", "Some3"]
let strArr2 = ["Somethingelse1", "Somethingelse2", "Somethingelse3"]

for (e1, e2) in zip(strArr1, strArr2) {
    print("\(e1) - \(e2)")
}

所以现在我真的很困惑。

1 个答案:

答案 0 :(得分:0)

zip()函数只接受两个参数(因此你的第二个例子工作原理)。 http://swiftdoc.org/v3.0/func/zip/

你试图传递四个论点。