当前位置: 首页 > 面试题库 >

Swift:通用类中的声明

滕璞瑜
2023-03-14
问题内容

假设我有一个通用类:

class SomeClass<Element> {
  // What is the difference between this:
  var array: [SomeClass]!

  // and this declaration:
  var array2: [SomeClass<Element>]!
}

这些声明之间有什么区别?


问题答案:

没有泛型参数就不能存在泛型类型,因此省略泛型类型意味着您希望编译器推断该类型。

在这种情况下,要推断的逻辑类型为Element

请注意,这仅适用SomeClass于您使用了内部SomeClass声明。它不适用于其他泛型类。

可以在变量声明中使用类似的通用参数推断:

let instance: SomeClass = SomeClass<Int>()
let array: Array = [1] // Array<Int>


 类似资料:
  • 问题内容: 我正在尝试创建一个字典变量,其值是两种类型之一。我的尝试的一个例子应该使这一点更清楚: 这引发了仅语法功能类型可以通用的编译器错误。我想知道是否有可能,我只是不知道正确的语法? 问题答案: 为此所需的工具是带有关联数据的枚举。 这样可以捕获“一个浮标或布尔对象”,并提供更好的文档记录和类型安全性。 要卸载数据,请使用switch语句: 使用switch语句可确保覆盖所有可能的类型,并防

  • 假设我在Swift中定义了一个泛型类,类似于以下内容: (我知道数组有一个稍微好一点的实现,这只是一个例子。) 在Swift中,我现在可以非常容易地使用这个类: 在Xcode 7中,我们现在在Objective-C中拥有泛型,所以我假设我可以在Objective-C中使用这个类: 然而,MyArray从未添加到我的<code>项目Swift中。h文件。即使我将其更改为从NSObject继承,它仍然

  • 问题内容: 在haskell中,您可以执行以下操作: 我试图在Swift中做类似的事情。到目前为止,我没有运气写过这些代码。 那么,这根本不可能很快吗?如果还有其他方法可以实现此行为? 更新: 似乎Swift 3现在支持通用类型别名 https://github.com/apple/swift/blob/master/CHANGELOG.md 问题答案: 从Swift 3.0开始可以使用泛型。这应

  • 问题内容: 该文件说 注意 Swift类不能从通用基类继承。您定义而未指定超类的类将自动成为您要构建的基类。” 摘录自:Apple Inc.“ Swift编程语言。” iBooks。 这对我来说没有多大意义。Objective- C具有通用基类是有原因的,并且同样的原因也适用于Swift,是吗?管理着保留/释放语义,对默认的实现,和。所有这些功能在Swift中也可用。 (Objective-C和S

  • 问题内容: 在Java中,我可以这样做: … 当然假设()。 使用 Scala 时, Scala 的模拟与此类似吗? (当然)不会编译-但是如何以这样的方式声明变量? 编辑 ; 我要补充一点。这种差异显然与以下事实有关:在Java中,泛型 在T 中 从不协变 ,而在Scala中,它们可以是协变的,也可以不是。例如,Scala类在T中是协变的(并且必然是不变的)。因此, 将编译 以下内容: 我还在为

  • 本文向大家介绍详解Swift中属性的声明与作用,包括了详解Swift中属性的声明与作用的使用技巧和注意事项,需要的朋友参考一下 一、引言 属性将值与类,结构体,枚举进行关联。Swift中的属性分为存储属性和计算属性两种,存储属性用于存储一个值,其只能用于类与结构体,计算属性用于计算一个值,其可以用于类,结构体和枚举。 二、存储属性 存储属性使用变量或者常量来存储一个值,在声明存储属性时,可以为其设