gpt4 book ai didi

swift - swift 中各种类型的变量声明之间的区别

转载 作者:可可西里 更新时间:2023-11-01 01:37:49 26 4
gpt4 key购买 nike

我很困惑何时以及如何在 Swift 中的特定点声明变量,这让像我这样的 SWIFT 新手很头疼。

以下类型的声明有什么区别?我已经给出了我对它们的想法和理解。如果我错了,请用您的解决方案纠正我,并稍微解释一下,以便我知道实际和准确的答案。

  Array - 
1) var arr = NSArray()//I think its an instance of immutable NSArray type
2) var arr = NSMutableArray()
3) var arr = Array()//I have no idea of difference between NSArray and Array type. Might be both are same
4) var arr : NSMutableArray?//Creates an optional type but how is it different from line no.2
5) var arr : NSMutableArray = []//creates an empty array NSMutableArray type and again how is it different from line no.2 & 3

请澄清一点,这样我的困惑程度就会清楚一点。谢谢

最佳答案

Array是一种快速类型,其中 NSArray是一个客观的 C 类型。 NS 类支持动态调度,并且在技术上比纯 swift 类访问速度稍慢。

1) var arr = NSArray()

arr是一个 NSArray()在这里 - 你可以重新分配东西给 arr但您不能更改 NSArray() 的内容- 这是使用 IMO 的错误选择,因为您已将无法使用的数组放入变量中。我真的想不出你想打这个电话的理由。

2) var arr = NSMutableArray()

这里有一些有用的东西。因为数组是可变的,所以您可以从中添加和删除项目

3) var arr = Array()

这不会编译 - 但是var arr = Array<Int>()将要。

数组采用通用元素类型(如下所示)

public struct Array<Element> : CollectionType, MutableCollectionType, _DestructorSafeContainer {
/// Always zero, which is the index of the first element when non-empty.
public var startIndex: Int { get }
/// A "past-the-end" element index; the successor of the last valid
/// subscript argument.
public var endIndex: Int { get }
public subscript (index: Int) -> Element
public subscript (subRange: Range<Int>) -> ArraySlice<Element>
}

4) var arr : NSMutableArray?

您在这里定义了一个可选 数组。这意味着 arrnil 的值开始如果以后需要,您可以为其分配一个数组 - 或者将其保留为零。这里的优点是,在您的类/结构中,您实际上不必为 arr 设置值。在你的初始值设定项中

5) var arr : NSMutableArray = []

enter image description here

听起来您对可选值感到困惑。

可选意味着它可以nil或者不能

当您键入 type? 时这意味着它是 nil除非你给它分配了一些东西,因此你必须展开它来访问值并使用它。

关于swift - swift 中各种类型的变量声明之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34104182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com