美文网首页
Dart、Swift、OC中泛型的使用

Dart、Swift、OC中泛型的使用

作者: Sweet丶 | 来源:发表于2020-11-07 21:30 被阅读0次

我们在定义一个类时,有一种情况,就是我们只有在使用时才能确定它的类型,比如数组中我们在具体使用时才知道自己写的数组是要放哪种类型数据的, 这个时候我们应该在定义这个类时附加泛型声明.下面是OC、Swift、Dart语法中泛型的例子。

一、OC中

比如下面是NSArray类的定义: 。

@interface NSArray<__covariant ObjectType> : NSObject
- (ObjectType)objectAtIndex:(NSUInteger)index;
@end

上面的<__covariant ObjectType>就是泛型的声明,其中__covariant是可写可不写的,ObjectType是一个标记的字符串,跟方法objectAtIndex:中的保持一致即可,我们在自定义泛型时也可以写成<ABCType>或者<T>或者其它...。

下面的ViewController中的array数组就是使用时声明了元素类型<NSString *>,在取出元素时就是NSString的实例对象, 可以直接调用NSString的方法。

// 一个例子
@interface ViewController ()
@property (nonatomic, strong) NSMutableArray<NSString *> *array;
@end

使用时写明泛型具体类型的好处是我们在取出里面一个元素时,可以直接对这个元素调用具体类型中的方法。
进行其它类型的操作时会有警告:

声明NSString*类型的数组中存放了NSNumber.png

iOS 强大的泛型

二、Swift中

下面代码中<T>就是代表是泛型,它的参数a和b都是泛型。

func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
    let temporaryA = a
    a = b
    b = temporaryA
}

The Swift Programming Language - Generic

三、Flutter中

将List中元素声明为String类型,后面操作的元素都是这个类型。

var names = List<String>();
names.addAll(['Seth', 'Kathy', 'Lars']);
// 报错 The argument type 'int' can't be assigned to the parameter type 'String'.
names.add(42); 

自己动手将泛型用起来就很容易理解了,各个语言只是写法上的不同。

相关文章

  • Dart、Swift、OC中泛型的使用

    我们在定义一个类时,有一种情况,就是我们只有在使用时才能确定它的类型,比如数组中我们在具体使用时才知道自己写的数组...

  • 使用Web浏览器编译Swift代码,及Swift中的泛型

    使用Web浏览器编译Swift代码,及Swift中的泛型 使用Web浏览器编译Swift代码,及Swift中的泛型

  • swift4 泛型(一)

    swift 泛型 OC 是没有泛型也不支持命命空间的,但是swift中这两者都有,本章主要介绍 泛型 对于iOS开...

  • swift 4.0 泛型

    泛型 Swift中mutating关键字 Swift中protocol的功能比OC中强大很多,不仅能再class中...

  • Swift和OC的区别

    Swift和OC的区别? 1、Swift没有地址和指针的概念 2、Swift对数据类型要求极为严谨 3、泛型,泛型...

  • # Swift学习 # 简单面试题

    1.什么是函数式编程? 2.swift相对于OC有哪些优点? 3.什么是泛型,swift在哪些地方使用了泛型? 4...

  • ios 整理(一)swift和oc的区别

    1.swift 是在oc上提出来的2.swift有oc中没有的类 比如 元组 有泛型3.因为swift 定义的常亮...

  • Swift中泛型的使用

    在使用Swift开发的过程中,我们可能经常会碰到泛型。那么究竟什么是泛型?泛型作为Swift最为强大的特性之一,该...

  • 带你Dart带你Diao之泛型

    泛型学过Java的都应该比较熟悉了,Dart的泛型和Java泛型的核心理念都差不多,在使用中略有不同。 1.使用泛...

  • 潭州ios面试题 1

    Swift 1> Swift和OC的区别 1.1> Swift没有地址/指针的概念 1.2>泛型 1.3>类型严谨...

网友评论

      本文标题:Dart、Swift、OC中泛型的使用

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