泛专题提供泛的最新资讯内容,帮你更好的了解泛。
为什么在将泛型类添加到枚举时会收到错误: class TestClass<T>{ enum TestEnum { case test } } 错误: 1. While type-checking 'ExampleTest' at /Users/xxx/xxx/xx/xx/ExampleTest.swift:11:1 <unknown>:0: error: u
以下示例在常规Mono 2.10.9中编译正常: namespace covarianttest { public interface ITest<out T> : IEnumerable<T> { } } 但是,当我尝试针对MonoTouch 6.0.8进行编译时,我收到此错误: 错误CS1961:协变类型参数’T’必须在’covarianttest.ITest’上不变地
作者:Ole Begemann,原文链接,原文日期:2016-10-13 译者:Cwift;校对:walkingway;定稿:CMB 我在前面的文章中提到过,Swift 中有两个基础的区间(Range)类型:Range 和 ClosedRange,并且这两个类型不能互相转换。这使得编写一个同时适用于两种区间类型的函数变得很困难。 昨天,swift-users 的邮件列表中有人问了一个具体的问题:假
在C / Objective-C中,可以使用MIN和MAX宏找到两个数字之间的最小值和最大值。 Swift不支持宏,似乎在语言/基础库中没有等价物。应该有一个定制的解决方案,也许基于类似这样的 one? min和max已经在Swift中定义: func max<T : Comparable>(x: T, y: T, rest: T...) -> T func min<T : Comparable>
是否可能扩展一个通用类为专门/构造的通用类型?我想扩展Int数组与一个方法来计算其元素的总和。 例如 extension Array<Int> { func sum() -> Int { return reduce(0) { $0 + $1 } } } 使用Swift 2,可以使用协议扩展实现(有关详细信息,请参阅 The Swift Programming L
我有问题与以下代码: func generic1<T>(name : String){ } func generic2<T>(name : String){ generic1<T>(name) } 将generic1(名称)结果转换为编译器错误“无法显式专门化一个通用函数” 有什么办法避免这个错误吗?我不能改变generic1函数的签名,因此它应该是(String) – >空隙 我也有
如何确定通用结构的两个实例是否是相同类型? 例如,给定以下结构: struct FooBar<T> { let variable: T init(arg: T) { variable = arg } } 并且以下片段: let foo = FooBar(1) let bar = FooBar(1.0) let baz = FooBar("1") 我如何确定f
我有一个协议,我定义如下: protocol MyProtocol { ... } 我也有一个通用结构: struct MyStruct <T> { ... } 最后我有一个通用的功能: func myFunc <T> (s: MyStruct<T>) -> T? { ... } 我想测试内部的函数,如果类型T符合MyProtocol。基本上我想要能够做(〜pseudocod
我试图在Swift中做以下的事情: protocol ProtocolWithAlias { typealias T } protocol AnotherProtocol { func someFunc() -> ProtocolWithAlias } 但是我收到错误:协议’ProtocolWithAlias’只能用作通用约束,因为它具有自身或相关类型的要求。 有可能做这样的事情
当我在一个通用的结构体中嵌套一个类,并尝试实现相等运算符,如下所示: struct Outer<T> { class Inner : Equatable {} } @infix func == <T>(lhs: Outer<T>.Inner, rhs: Outer<T>.Inner) -> Bool { return lhs === rhs } 当我尝试运行该项目时,我收到以下错
我想使用一个函数来扩展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
我在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. } } 我一直在寻找好几个小时,我似乎无法找到任何办法.有没有人试过这个? 任何帮助是极大的赞赏. 谢谢 一个纯粹的快速实现方式是不可能的.
我在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
我想通过 Swift了解具有通用关联值的枚举的确切限制. 您可能会认为它们是受支持的,因为可选是这样的类型.以下是Swift标准库中可选的代码: enum Optional<T> : Reflectable, NilLiteralConvertible { case None case Some(T) // ... } 看起来像case一些有变量类型T的关联值,对吗? 但是,在Fu
看看 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时收到错误 我唯一的选