GVKun编程网logo

Swift:使用不同对象实例的默认值创建一个数组(swift定义数组)

5

想了解Swift:使用不同对象实例的默认值创建一个数组的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于swift定义数组的相关问题,此外,我们还将为您介绍关于AcerSwift3笔记本怎么样

想了解Swift:使用不同对象实例的默认值创建一个数组的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于swift定义数组的相关问题,此外,我们还将为您介绍关于Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏、Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望、Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数、ios – Swift 3发布后,Swift 2应用程序是否可以运行?的新知识。

本文目录一览:

Swift:使用不同对象实例的默认值创建一个数组(swift定义数组)

Swift:使用不同对象实例的默认值创建一个数组(swift定义数组)

创建具有默认值的数组时,* 我注意到了一些怪异( 和危险的恕我直言 )行为。如Swift
2.1中所述:集合类型
*

Swift的Array类型还提供了一个初始化程序,用于创建一个特定大小的数组,并将其所有值设置为相同的默认值。您向此初始值设定项传递要添加到新数组中的项目数(称为count)和适当类型的默认值(称为repeatedValue):

关键是: 相同的默认值 ;为了了解它是如何工作的,我尝试创建此示例类的元素数组

class User {  private struct Shared {    static var sequence: Int = 0  }  var id: Int  var thinkTime: NSTimeInterval // typealias di Double  init (thinkTime: NSTimeInterval) {    User.Shared.sequence = User.Shared.sequence+1    id = User.Shared.sequence    self.thinkTime = thinkTime  }}

和此测试代码:

let  howManyUsers: Int = 3var users = [User](count: howManyUsers, repeatedValue:User(thinkTime: 10.0))let u2: User = User(thinkTime: 10)let u3: User = User(thinkTime: 10)users.append(u2)users.append(u3)users[1].thinkTime = 20users[3].thinkTime = 30for u in users {  print("User id:\(u.id) thinktime:\(u.thinkTime)")}

给出:

User id:1 thinktime:20.0     User id:1 thinktime:20.0User id:1 thinktime:20.0User id:2 thinktime:30.0User id:3 thinktime:10.0

使用要添加到新数组中的项数以及适当类型的默认值来明确证明初始化程序是: 相同的对象实例

哪种方法尽可能简洁明了,才能获得一组具有相同默认值(不是同一实例,而是许多使用相同默认值初始化的实例)实例化的 不同对象实例

答案1

小编典典

类是引用类型,因此-正如您所注意到的-中的所有数组元素

var users = [User](count: howManyUsers, repeatedValue:User(thinkTime: 10.0))

引用相同的对象实例(首先创建该实例,然后将其作为参数传递给数组初始化器)。

对于struct类型,您将获得不同的结果。

可能的解决方案:

var users = (0 ..< howManyUsers).map { _ in User(thinkTime: 10.0) }

在这里,User为每个数组索引创建一个实例。

如果经常需要,则可以定义一个带有“ autoclosure”参数的数组初始化方法:

extension Array {    public init(count: Int, @autoclosure elementCreator: () -> Element) {        self = (0 ..< count).map { _ in elementCreator() }    }}var users = Array(count: howManyUsers, elementCreator: User(thinkTime: 10.0) )

现在,第二个参数User(thinkTime: 10.0)由编译器包装到一个闭包中,并对每个数组索引执行闭包。


Swift 3更新:

extension Array {    public init(count: Int, elementCreator: @autoclosure () -> Element) {        self = (0 ..< count).map { _ in elementCreator() }    }}

Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏

Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏

Acer Swift 3是宏碁推出的笔记本电脑,具有轻薄时尚等元素,这里为大家带来 Acer Swift 3笔记本上手图赏 ,一起来看看。

14英寸1920*1080的显示屏幕、2.5GHz的英特尔酷睿酷睿i3、i5-7200u/i7处理器、图形128mb英特尔高清显卡620、8GB/256GB的SSD、Windows Hello、指纹识别器,处理速度快可媲美MacBook,售价仅为1398美元(约£1090/1760美元),性价比方面还是不错的。

以上就是 Acer Swift 3笔记本上手图赏 相关内容,希望对你有帮助。

Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望

Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望

总结

以上是小编为你收集整理的Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

总结

以上是小编为你收集整理的Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

ios – Swift 3发布后,Swift 2应用程序是否可以运行?

ios – Swift 3发布后,Swift 2应用程序是否可以运行?

我发布了几个用 Swift 2.0和2.1编写的应用程序.现在Apple刚开源Swift并宣布Swift 3.0将于明年发布.在Swift 3.0发布后,我的应用程序仍然有用吗?

解决方法

我想你在这里问两个不同的问题.

>当Swift 3推出时,您的应用程序是否会在新操作系统上执行?
>推出时,您的应用会在新操作系统上运行吗?

关于第一个问题,是的,你的应用程序将执行,即使它是针对Swift 2编译的.Swift应用程序在其捆绑包中嵌入了Swift运行时库,因此您在这方面是安全的.您会注意到Swift捆绑包总是比Objective-C对应物大4-5 MB,这正是原因所在.

关于第二个问题,与任何新的操作系统版本一样,无法保证您的应用程序能够像以前版本的操作系统那样工作.虽然根据我的经验,Apple在过去的几个OS版本中做了相当不错的工作,尽管你的里程可能会有所不同.

今天关于Swift:使用不同对象实例的默认值创建一个数组swift定义数组的讲解已经结束,谢谢您的阅读,如果想了解更多关于Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏、Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望、Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数、ios – Swift 3发布后,Swift 2应用程序是否可以运行?的相关知识,请在本站搜索。

本文标签: