- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Swift心得笔记之集合类型由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
数组 。
重复值的初始化 。
除了普通的初始化方法,我们可以通过 init(count: Int, repeatedValue: T) 来初始化一个数组并填充上重复的值:
。
。
带索引值的遍历 。
我们可以用 for in 遍历数组,如果想要 index 的话,可以用 enumerate<Seq : SequenceType>(base: Seq) :
。
。
赋值与拷贝 。
Swift 中数组和字典均是结构体的形式实现的,和 NSArray 那一套不太一样,所以赋值的时候其实是给了一份拷贝:
。
。
高阶函数 。
Swift 有一些 Higher Order Functions :map、filter和reduce。使用得当的话可以省去很多不必要的代码.
map 。
map 可以把一个数组按照一定的规则转换成另一个数组,定义如下:
。
。
也就是说它接受一个函数叫做 transform ,然后这个函数可以把 T 类型的转换成 U 类型的并返回 (也就是 (T) -> U),最终 map 返回的是 U 类型的集合.
下面的表达式更有助于理解:
。
。
如果用 for in 来实现,则需要这样:
。
。
举个例子,我们可以这样把价格数组中的数字前面都加上 ¥ 符号:
。
。
如果你觉得 money in 也有点多余的话可以用 $0 :
。
。
filter 。
方法如其名, filter 起到的就是筛选的功能,参数是一个用来判断是否筛除的筛选闭包,定义如下:
。
。
还是举个例子说明一下。首先先看下传统的 for in 实现的方法:
。
。
奇怪的是这里的代码编译不通过:
。
。
发现原来是 += 符号不能用于 append ,只能用于 combine ,在外面包个 [] 即可:
。
。
(靠。。居然忘了贴 filter 的用法,写到后面才发现。。) 。
用 filter 可以这样实现:
。
。
你真的好短啊! 。
reduce 。
reduce 函数解决了把数组中的值整合到某个独立对象的问题。定义如下:
。
。
好吧看起来略抽象。我们还是从 for in 开始。比如我们要把数组中的值都加起来放到 sum 里,那么传统做法是:
。
。
reduce 有两个参数,一个是初始化的值,另一个是一个闭包,闭包有两个输入的参数,一个是原始值,一个是新进来的值,返回的新值也就是下一轮循环中的旧值。写几个小例子试一下:
。
。
大概就是这些.
map 用来解包可选类型 。
我们在解包可选类型的时候,通常会这么做:
。
。
我们也可以用 map 来实现:
。
func increment(someNumber: Int?) -> Int? { return someNumber.map { number in number + 1 } } 。
。
increment(5) // Some 6 increment(nil) // nil 。
。
包括其他可选类型也是可行的,比如 String :
。
。
再搭配上 ?? 符号,嗯基本够用了:
。
func hello(someName: String?) -> String { return someName.map { name in "Hello, \(name)" } ?? "Hello world!" } 。
。
hello("NatashaTheRobot") // "Hello, NatashaTheRobot" hello(nil) // "Hello world!" 。
。
扩展 。
数组和字典十分常用,而官方的方法功能有限。我们可以学习ExSwift 中 Array.swift 的内容,给 Array 添加一些 Extension.
以上所述就是本文的全部内容了,希望大家能够喜欢.
最后此篇关于Swift心得笔记之集合类型的文章就讲到这里了,如果你想了解更多关于Swift心得笔记之集合类型的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
编辑:我似乎问错了这个问题。 我正在尝试寻找一种方法来查询一个集合是否在另一个集合中可用。例如: SELECT * FROM something WHERE (1, 3) IN (1, 2, 3, 4
这两种方法似乎 produce the same results ,但我一直很难真正说服人们第二种方法有效,因为它显然并不为人所知。 // Create some data var foo = { '
我一直在学习Kotlin,并且遇到过Collections API。在Kotlin之前,我一直在学习Java,并且我知道Java中有很多不同类型的Collections API。例如,我们使用List
为什么我会得到不同的行为: Collection col2 = new ArrayList(col); 集合 col2 = new ArrayList(); col2.addAll(col) 我正在与
所以我有一个代表专辑信息的 JSON 对象。给定“function updateRecords(id, prop, value)”我希望能够更新每个条目。正确的完成代码如下。 我得到了指示,粗体部分,
我想存储一个对象集合,这些对象根据它们所代表的值进行键控。这些键可以重复。例如: [4] => Bob [5] => Mary [5] => Sue [9] => Steve [10] =>
在检查 ArrayList API 时,我注意到一些看起来很奇怪的东西。 确实,这里是 ArrayList 构造函数实现,其中 Collection 作为参数传递: public ArrayList(
我正在为 API 编写一个 swagger 定义文件。 API 是用于 GET 请求的 /path/to/my/api: get: summary: My Custom API d
我知道scala.collection包中有两个非常有用的对象,可以帮助我们实现这个目标: JavaConverters(如果我想明确说明并准确说明我要转换的内容) JavaConversions(如
我已经阅读了无数其他帖子,但似乎无法弄清楚发生了什么,所以是时候寻求帮助了。 我正在尝试将包含集合的域实体映射到也包含集合的 dtos。 这是一个原始示例; (我提前为代码墙道歉,我尽量保持简短):
我正在创建一个具有 ArrayList 的类,因此当我调用构造函数时,它会初始化该数组: public class ElementsList { private ArrayList list;
我正在阅读事件指南和指南的开头,它说: You can also add an event listener to any element in the this.$ collection using
我是 Python 新手,想知道如何使用键在字典中存储不同数据类型的列表 例如 - {[Key1,int1,int1,String1] , [Key2,int2,int2,String2], [Key
int[] mylist = { 2, 4, 5 }; IEnumerable list1 = mylist; list1.ToList().Add(1); // why 1 does not get
我在 UI 表单中的每一行之后将以下内容添加到 HashMap 集合中 声明 Map> map = new HashMap>(); List valSetOne = new ArrayList();
我正在开发我的第一个 Java 项目,我有一个问题。问题应该很简单(虽然代码不是那么短,但没有理由被吓倒:))。我创建了一个基本的角色扮演游戏,并且有一个定义每个角色的抽象类“Character”。在
我正在开发一款应用程序,可以为用户收集推文、Facebook 状态和 Facebook 照片。目前,用户确切地设定了他们希望这种收获发生的时间和时间,并且蜘蛛会在此期间拉取数据。 when 和 to
有谁知道在 C# 中是否有与 Java 的 Set 集合等效的好方法?我知道您可以通过填充但忽略值来使用 Dictionary 或 HashTable 在某种程度上模仿集合,但这不是一种非常优雅的方式
EXISTS 该函数返回 集合中第一个元素的索引,如果集合为空,返回NULLNULLNULL Collecti
RDF集合是通过属性 rdf:parseType="Collection" 来描述仅包含指定成员的组 rdf:parseType="Collection" 属
我是一名优秀的程序员,十分优秀!