相关疑难解决方法(0)

仅适用于数字类型的通用类型约束

我试图找出如何为泛型类(在Swift中)实现类型约束,它将泛型类型仅限于数值类型.例如Double,Int等,但不是字符串.谢谢你的帮助.

generics ios swift

30
推荐指数
2
解决办法
9667
查看次数

如何创建一个数组或字典,其值只能是String,Int和Boolean?

我需要创建一个数组,其值只能是String,Int或boolean.如果我尝试添加Double或任何其他值类型,Swift编译器应该抱怨.

arrays dictionary swift

11
推荐指数
2
解决办法
379
查看次数

具有扩展类型约束的 Swift 字典

我想定义一个允许多种特定类型的值的字典。我目前可以定义这样的字典:

var foo = [String: String]
Run Code Online (Sandbox Code Playgroud)

将值限制为一种特定类型

或者

var foo = [String: AnyObject]
Run Code Online (Sandbox Code Playgroud)

它将值限制为 AnyObject,它没有特别限制。

我想做类似的事情:

var foo = [String: <String, Int>]
Run Code Online (Sandbox Code Playgroud)

这将允许我在此字典中仅插入字符串或整数作为值。

我已经考虑过使用枚举,如下所示:Swift 中的通用字典值类型,但我更愿意找到一种方法,允许我动态指定类型而无需扩展或创建新的枚举。

var bar = [String: <String, Int, Bool, MyClass>]
Run Code Online (Sandbox Code Playgroud)

似乎我应该能够创建一个带有 [String: AnyObject] 内部字典的包装类,它允许针对可以插入的任意长的类列表进行编译时类型检查。

class ECDictionary<T> {

    private var internal_storage = [String: AnyObject]()

    subscript(s: String) -> T {
        get {
            return internal_storage[s]
        }
        set(newValue) {
            internal_storage[s] = newValue
        }
    }
}


var myECDictionary = ECDictionary<String, Int, OtherClass>()
Run Code Online (Sandbox Code Playgroud)

我可以使用运行时类型检查来构建它,但我宁愿在编译时强制执行它。这有可能吗?

generics dictionary swift

0
推荐指数
1
解决办法
432
查看次数

标签 统计

swift ×3

dictionary ×2

generics ×2

arrays ×1

ios ×1