Array uzantısı olarak bir zip işlevi uygulamaya çalışıyorum ve bunun gibi kullanılmasını istiyorum. Bu:swift - '[Int]' türünün beklenen argüman türüne dönüştürülemez '[_]'
extension Array {
public func zip<T,U>(vals: [U]) -> [T:U] {
var dict: [T:U] = Dictionary()
for (i,key) in self.enumerate() {
if let k = key as? T {
dict[k] = vals[i]
}
}
return dict
}
}
let myKeys = ["a","b","c"]
let myVars = [1,2,3]
myKeys.zip(myVars) // ERROR: Cannot convert value of type '[Int]' to expected argument type '[_]'
son satırda ben tamamen anlamıyorum bir hata alıyorum:
let myKeys = ["a","b","c"]
let myVars = [1,2,3]
myKeys.zip(myVars) // ["a":1,"b":2,"c":3]
İşte benim girişimidir. Bunu [Int] geçirdiğimi ve [_] beklediğimi anladım. Ama burada sadece genel bir yer tutucu değil mi? Neden [Int] almaktan şikayet ediyor? Bir sınıf fonksiyonu olarak zip uygulamak durumunda
Ayrıca, hiç sorunları vardır: Bu konuda
class func zip<T,U>(keys keys: [T], vals: [U]) -> [T:U] {
var dict: [T:U] = Dictionary()
for (i,key) in keys.enumerate() {
dict[key] = vals[i]
}
return dict
}
zip(keys: myKeys,vals: myVals) // ["a":1,"b":2,"c":3]
Herhangi bir düşünce çok takdir!
Teşekkürler @Sulthan! Bu tam olarak amaçlandığı gibi çalışır. – OhNo