草庐IT

nested-generics

全部标签

generics - Swift 泛型和下标 - 值与 K 不同

我收到一个编译错误,因为编译器认为我的元组中的“键”与通用数组的类型不同。知道为什么吗?classMyClass{letkeys=[K]()subscript(index:Int)->(key:K,value:V){set(newValue){//alsotriednewValue.key!keys[index]=newValue.key}}} 最佳答案 您正在尝试设置数组keys的值,同时它被声明为不可变数组。keys数组应声明为:varkeys=[K]()//vardeclarationmakesitmutable

swift 2.0 : Creating a Collection Type of Objects that conform to a Generic Protocol

例如:protocolSomeProtocol{typealiasTfuncdoSomething(something:T)}leta=Array()我想要一个数组,它是一个符合SomeProtocol的对象数组。这在理论上似乎很好,但我收到以下错误消息:Cannotbeusedasagenericconstraintbecauseitcontainsassosciatedtyperequirements.我想这是有道理的,毕竟Array也是一个通用结构,因此编译器将无法确定SomeProtocol和的实际类型数组是通用的。所以我的问题是-我觉得我应该能够拥有一个符合SomeProto

xcode - swift 泛型 : More specialized than generic?

XCode6:测试版5:目标:我正在尝试为语义兼容但不共享(或似乎共享)足够的协议(protocol)的类型编写泛型代码,以使我的泛型基于共享协议(protocol)的子集。到目前为止,我还没有找到解决方案,我想知道我是否遗漏了一些东西,或者它是否是语言的限制-任何见解都将受到赞赏。问题:我有一些函数只在类型上有所不同,在语义上没有区别,看起来很适合泛型。我遇到的问题是,据我所知,Swift执行的似乎是泛型的解析时绑定(bind),如果可能存在问题则失败,而不是在实际存在问题时失败。示例:在人为的示例中考虑以下通用函数:funcdefVal(T.Type)->T{return0.0}f

generics - 将 Swift 事物与 NSObject 实例相关联

我想通过扩展将Swift事物(泛型、结构、元组,任何Objective-C不喜欢的东西)与NSObject实例相关联。我们今天如何做到这一点?objc_setassociatedobject对处理Swift特性没有用。我的第一种方法是使用带有弱键的全局字典来存储关联。像这样的东西:structWeakKey:Hashable{weakvarobject:T!init(object:T){self.object=object}varhashValue:Int{returnself.object.hashValue}}func==(lhs:WeakKey,rhs:WeakKey)->Boo

generics - 带有数组的 Swift countElements()

问题是否可以在我的设置中使用Array调用countElements()?问题详情countElements()与String配合使用效果很好。但是我不知道如何将thing转换为Array从而不调用countElements()。请注意方法签名必须是funcmyCount(thing:Any?)->Int,因为这是usedinmyopensourceproject.funcmyCount(thing:Any?)->Int{ifthing==nil{return-1}ifletx=thingas?String{returncountElements(x)}iflety=thingas?A

swift - 在 Swift 中,返回相同类型函数的通用函数给我 "Cannot explicitly specialize a generic function"

此函数接受一个Void->T函数并返回一个Void->T函数。funcfuture(f:Void->T)->Void->T{letqueue=dispatch_queue_create("com.test.lockQueue",nil)varresults:T?dispatch_async(queue){results=f()}return{dispatch_sync(queue){}returnresults!}}如果我这样使用它:letf=future{NSThread.sleepForTimeInterval(2)return10}我收到错误“无法显式特化通用函数”。但是,如果我

generics - 简单的 Swift 泛型难题

我正在尝试了解如何使用Swift中的泛型工具做一些简单的事情。我把我面临的一个问题归结为一个简单的难题。想象一下,我想写一个值类型Pair有一个flip它的方法返回该对的副本,但两个值(及其类型)相反。structPair{leta:Aletb:Binit(first:A,second:B){a=first;b=second;}funcflip()->Pair{returnPair(self.b,self.a)}}当我写这篇文章时,我在尝试返回新的翻转对的行中遇到错误。Cannotconverttheexpression'stype'Pair'totype(first:A,second

generics - 在 Swift 数组中存储通用对象

写了下面的小测试:classModel{}classSubModel:Model{}classCollection{}letcollection=Collection()varcollections=[Collection]()//Alsotried[Collection]()collections.append(collection)编译器在追加调用时失败。消息是:“SubModel”与“Model”不同。根据我使用过泛型的所有其他语言的经验,这应该可行。作为SubMode类型的集合,应该始终可以强制转换为Model类型的集合。有人遇到这个吗?解决方法?

generics - 如何在 Swift 中实现 CollectionOf

查看thisquestion,我正在尝试为CollectionType实现一个名为CollectionOf的等效项,但我遇到了其中一个约束的问题:structCollectionOf:CollectionType{init(_collection:C){//etc.}//etc.}这不会编译。让我们忽略我还没有实现CollectionType成员的事实。我会开始的。我面临的问题是编译器不喜欢我的init。它提示说,“相同类型的约束索引不符合要求的协议(protocol)ForwardIndexType。”显然是这样。也许我们有一个编译器错误。也许我的语法是错误的。无论如何,我该如何实现

generics - 通用扩展的快速类型约束

经过一些压力,我创建了以下通用函数:funcremoveDupes(inoutinputCollection:[T])->[T]{varhashMap=[T:Bool]()varoutput=0forthingininputCollection{if!hashMap[thing]{hashMap[thing]=trueinputCollection[output++]=thing}}while(inputCollection.count>output){inputCollection.removeLast()}returninputCollection}所以当你这样做的时候:varna