美文网首页
使用泛型下标操作符

使用泛型下标操作符

作者: 醉看红尘这场梦 | 来源:发表于2020-03-22 19:17 被阅读0次

SE-0148中,为Collection类型添加了一个新能力,可以让下标操作符返回一个泛型类型。对此,受益最大的,就是类似JSON处理的代码。我们通过对一个Swift 3场景的改造过程来理解它的用法:

首先,自定义一个表示JSON的类:

struct JSON {
    private var data: [String: Any]

    init(data: [String: Any]) {
        self.data = data
    }

    subscript(key: String) -> Any? {
        return data[key]
    }
}

其次,定义一个JSON对象:

let json = JSON(data: [
    "title": "Generic subscript",
    "duration": 300
])

最后,如果我们要读取JSON中的内容,在Swift 3中,只能把结果先读出来,此时类型是Any?,然后再转换成期望的类型:

let title: String? = json["title"] as? String
let duration: Int? = json["duration"] as? Int

在这个例子里,每次访问json中的值都要类型转换是一件很麻烦的事。在Swift 4里,允许我们把subscript定义成一个泛型函数,像这样:

struct JSON {
    // ...

    subscript<T>(key: String) -> T? {
        return data[key] as? T
    }
}

于是,之前定义titleduration的代码就可以简化成:

let title: String? = json["title"]
let duration: Int? = json["duration"]

这样,就不用再频繁的使用类型转换了。

相关文章

  • 使用泛型下标操作符

    在SE-0148中,为Collection类型添加了一个新能力,可以让下标操作符返回一个泛型类型。对此,受益最大的...

  • Swift 4新功能-4

    八、泛型下标 下标现在可以有泛型参数和返回类型.最权威的例子莫过于表示 JSON 数据: 你可以定义一个泛型下标来...

  • 泛型下标

  • swift泛型约束

    查找某个数组中的元素下标(这里使用最笨的循环查找) 泛型约束

  • Java-API-集合框架(三)-泛型

    泛型的由来和基本使用 泛型的擦除 泛型类的使用 泛型方法的使用 泛型接口 泛型通配符(?) 通配符? 在api中的...

  • 夯实JAVA基础之 - 泛型

    泛型的定义及使用 1. 定义泛型: 2. 类中使用泛型 3. 使用泛型类 4. 使用泛型的优势? 多泛型变量的定义...

  • Java 泛型

    一、泛型使用 1、泛型类 2、泛型函数 二、泛型限定符 1、泛型上限 泛型上限使用 extends 限制 多个限制...

  • Objective-C 泛型 协变 逆变

    为什么要使用泛型 如何使用泛型 限制泛型 协变 逆变 为什么要使用泛型 在使用NSArray, NSSet, NS...

  • Java泛型

    本文介绍的知识点 泛型是什么? 泛型的使用在反射中使用泛型在集合类中使用泛型 关于泛型擦除如何理解?如何避免泛型擦...

  • java基础-day13-泛型

    泛型 1. 泛型 1.1 为什么要使用泛型 1.2 泛型的基本格式 1.3 泛型在方法中使用 1.3 泛型在类内的...

网友评论

      本文标题:使用泛型下标操作符

      本文链接:https://www.haomeiwen.com/subject/fdiuehtx.html