1
Arrayの拡張機能としてZip関数を実装しようとしています。この:swift- '[Int]'型の値を期待値型 '[_]'に変換できません
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 '[_]'
最後の行で、私は完全に理解していないエラーを取得しています:
let myKeys = ["a","b","c"]
let myVars = [1,2,3]
myKeys.zip(myVars) // ["a":1,"b":2,"c":3]
は、ここに私の試みです。私はそれが[Int]を渡していることを意味し、[_]を期待していることを理解しています。しかし、ここでは一般的なプレースホルダではありませんか?なぜそれは[Int]を受け取ることに不平を言うのですか?この上の任意の考えをいただければ幸い
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]
:私はクラスの関数としてのzipを実装する場合
はまた、それは何の問題を持っていません!
ありがとう@Sulthan!これは意図したとおりに正確に動作します。 – OhNo