型专题提供型的最新资讯内容,帮你更好的了解型。
Swift参考某几种语言,增加了泛型这一机制,让人又爱又恨。 泛型增加了语言的表现力,减少了冗余,这是好消息;然而坏消息是:对于复杂的实现来说,七绕八不绕,语法容易把人搞晕…以下就是一例。 这是从我实际的项目中摘出来的例子,做了简化。有童鞋看到后面的代码可能会问,这么简单的问题,干嘛要绕圈写这么复杂的实现???这不前面说了么,因为实际的项目复杂!!!这里只是简化到讲解本主题,所以若有词不达意,也请
原文:http://coolketang.com/staticCoding/5a99261eee920a671bb5442d.html 1. 本节课将为你解析泛型的使用。泛型是另外一种可以使编码更加简单、快捷的方式。你可以将泛型简单理解为:泛指所有类型。  2. 首先导入需要使用到的界面工具框架。  3. 你需要创建一个方法,它的功能是将一个整型数组,合并到另一个整型数组。  4. 通过一个循环语
我正在尝试Swift书中的一些例子,即他们引用下标选项的矩阵示例。这是我的代码: struct Matrix<T> { let rows: Int, columns: Int var grid: T[] var description: String { return "\(grid)" } init(rows: Int, columns
当我在一个通用的结构体中嵌套一个类,并尝试实现相等运算符,如下所示: struct Outer<T> { class Inner : Equatable {} } @infix func == <T>(lhs: Outer<T>.Inner, rhs: Outer<T>.Inner) -> Bool { return lhs === rhs } 当我尝试运行该项目时,我收到以下错
我正在尝试转换和/或根据指定的泛型类型生成变量。我知道swift中没有类型擦除,但是除了泛型的指定条件之外,它似乎不是泛型保留类型。符合基础类。看起来我可以转换或初始化是基类。更奇怪的是,当我在调试器中时,通用程序似乎有一个RawPointer到正确的类,甚至变量看起来像是正确的类型: 编辑: 从Xcode 6.1开始,这仍然是一个问题(Gregory Higley提供的简化代码): class
我想使用一个函数来扩展Array,该函数将返回Array中所有非零项的计数。理想情况下,这可以使用任何可选或非可选类型的数组。我尝试了无法编译,崩溃的Xcode或两者的各种事情。我会假设它会像这样: extension Array { func realCount() -> Int { var cnt = 0 for value in self {
我正在尝试创建一个符合Comparable协议的简单通用节点类,以便我可以轻松地比较节点而无需访问其密钥.当我试图写<和==函数,但是,编译器似乎不喜欢它. <和==函数在定义Node参数时需要一个类型.这在Java中很简单,你定义了相等性和<在课堂内部.斯威夫特在全球范围内要求它.有什么想法吗 ? 例: func < (lhs:Node<E:Comparable>, rhs:Node<E:Com
我想为UnsafeMutablePointer创建一个只影响UnsafeMutablePointer< UInt8> …的扩展程序. 我理解这些说明是相关的,但我不确定如何: When you extend a generic type, you do not provide a type parameter list as part of the extension’s definition.
我在Swift中实现了一个使用Dictionary键的Set.我想实现一个addAll(序列)方法,该方法在Set中的Elements上采用任何序列类型,但是我得到一个没有意义的错误.这是我的代码 struct Set<Element: Hashable> { var hash = [Element: Bool]() init(elements: [Element] = [])
在我的应用程序中,我想创建一个通用的方法,它创建一个给定类型T的对象依赖的数组. 我创建了以下功能: func getArray<T : ROJSONObject>(key:String) -> T[] { var elements = T[]() for jsonValue in getValue(key).array! { var element = T()
我有一个类型T的泛型类,我想获取在实例化时传入类的类型的名称.这是一个例子. class MyClass<T> { func genericName() -> String { // Return the name of T. } } 我一直在寻找好几个小时,我似乎无法找到任何办法.有没有人试过这个? 任何帮助是极大的赞赏. 谢谢 一个纯粹的快速实现方式是不可能的.
到目前为止,我只能使用全局函数实现这一目标.我不确定是否可能,但我希望写一个泛型类的扩展,希望能实现同样的目的. 下面是使用ReactiveCocoa的SignalProducer类的工作全局函数,但对于任何泛型类,原则应该相同. func ignoreNilValues <Value,Error> (producer: SignalProducer<Value?,Error>) -> Signa
我在Swift(XCode beta 5)中遇到泛型类和NSCoding问题.具体来说,这个示例代码很好地工作: class Foo : NSObject, NSCoding { let bar: String init(bar: String){ self.bar = bar; } func encodeWithCoder(aCoder: NSC
是否可能要求通用类型的特定实例符合Swift中的协议? 例如,说我有一种叫做Thing< T>的泛型.我想要Thing< Int>以符合某一协议,但不符合Thing< T>. 那么这可能不是太繁重了,而且你可能会忽略它,但是你可以做出一个“通用类型的具体实例化”,如: class ThingOfInt : Thing<Int>, SpecialIntProtocol { // implement
我试图使一个泛型类型的类型如下 class Cars<T> { ... } typealias SportCars = Cars 但是我正在收到一个编译错误,参考通用类型’Cars’需要< ...>中的参数. 现在,你已经发现,你不能用泛型进行这个操作. typealias Foo = Array // Doesn't work: Reference to generic type 'Arr
我想通过 Swift了解具有通用关联值的枚举的确切限制. 您可能会认为它们是受支持的,因为可选是这样的类型.以下是Swift标准库中可选的代码: enum Optional<T> : Reflectable, NilLiteralConvertible { case None case Some(T) // ... } 看起来像case一些有变量类型T的关联值,对吗? 但是,在Fu
以下 Swift代码在构建时生成编译错误: import Foundation class Wrapper<T> : NSObject { let obj : T init(x : T) { self.obj = x } } 我做错了什么或是编译器错误? 如果是这样,我该怎么办呢? 错误日志: CompileSwift normal i386 com.a
看看 Swift中的=运算符的重载的定义,它允许您向集合添加元素: /// Append the elements of rhs to lhs func +=<T, C : Collection where T == T>(inout lhs: ContiguousArrayBuffer<T>, rhs: C) ^^^^^^ 什么是T
我想有一个泛型函数,可以在两个值上使用加号运算符. class funccalc { func doAdd<T>(x:T,y:T) -> T { return x + y } } let a = funccalc() println(a.doAdd(1, y: 4)) println(a.doAdd(23.54, y:200)) 我在返回x y时收到错误 我唯一的选
我有一个函数负责在应用程序中发出HTTP请求.基本上,它设置所有必需的标题,超时等…等… 然后,当请求完成时,我运行2个函数(由开发人员提供):whenSuccess / whenError(取决于调用的结果)和whenComplete(无论调用的结果).我希望最后一个能够接收whenSuccess函数的结果. 我将doRequest函数声明为 private func doRequest<S>(