关于for循环------swift3.0
在程序开发当中,for循环使用的频率无疑是最高的。常用的swift循环是递增式遍历。当然各种循环,swift都能办到。但其大多采用关键字形式实现,大部分开发者更喜欢直接使用C式循环代码。在swift3.0后,C语言形式被彻底废弃,因此从低版本升上来的代码如果是swift风格写法,按照提示基本可以直接fix。但如果很多循环实现都是基于C语言形式,那不得不讨论一下如何拯救这个可怕的习惯了。swift的循环语言特性跟python最为接近(ps:我学的语言当中最接近)。所以,大多数python循环能处理的情况,swift都能办到且更为优雅。
1:如何遍历一个字典或者数组?
首先要提的是swift的for..in..语法,这个语法在python当中被称之为迭代。用于数组,字典之类的数据内容遍历。从作用上分析,是直接将数组元素赋值给变量,并取出,无需通过数组下标来取值。而针对于字典,除了取出key值,我们还可以同时取出关键字。具体代码如下
let list = [1,3,5,7,"string test"]
for i in list{
print(i)
}
let dict = ["name":"key name","name1":"key1 name","name2":"key 2 name"]
for key in dict{
print(key)
}
}
2:也许,我仅仅是需要一个计数器?
更多时候,循环变量被用于约束循环的次数或者做为int类型进行引用,值得一提的是,swift支持直接区间遍历。在3.0版本之前,python的区间语法range关键词适用。在3.0以后。swift不推荐使用。并且基于自身语言特性,在使用时,需要额外加关键字。那么,我们如何用swift带来的语法糖写出漂亮的for循环呢 代码如下:
for i in 1..<10{
print(i)
// 打印结果为1-9
}
for i in 1...10{
print(i)
//打印结果为1-10
}
for i in Range(start: 1,end: 10){
print(i)
// 打印结果为1-9 不推荐使用
}
3:help 我真的需要递减!
这也许是swift的一个大坑了,当然解决方式很容易。只需要一个关键字即可实现,swift3.0之后稍有变化。对要遍历的区间调用reverse()方法,即可实现for循环的反向遍历,代码如下
for i in (0...10).reverse(){
print(i)
// 打印结果为10-0
}
4:这就结束了吗
当然不是啦,从语言特性上来上说,python对数组和循环的处理是最令人觉得舒适的。而在循环的处理上,几乎涵盖了python的所有特性,且大多也是以函数调用的方式来处理的。下面就要介绍一下平时可能会用到的一些方法。
4.1.enumerate
如词,这是为遍历对象调用一个枚举方法,在对数组等结构进行遍历时,我们偶尔需要知道每次遍历的索引,那么就需要用到enumerate了,其返回对象是一个元组,形式为(x,y),x代表遍历的索引值,y代表遍历的元素。代码如下:
for (index, i) in (1...10).enumerate(){
print(index)// 遍历索引
print(i) // 遍历元素
}
4.2 filter
也许,你想要在循环就过滤掉一系列毫无意义的数据?,swift提供在循环时直接过滤的方法,代码如下:
for i in (1...10).filter({ i in i % 2 == 0}) {
print(i)
//输出结果为1-10之间的偶数
}
///////////补充一个漂亮的语法糖///////////
for i in (1...10).filter({ $0 % 2 == 0}) {//swift闭包可以省略参数且用$0匿名,第二个参数则用$1,以此类推
print(i)
//输出结果为1-10之间的偶数
}
如上,除了单独调用方法对循环进行处理之外,swift还支持在循环中嵌套调用各种方法,这使得对数据的处理更为方便快捷,所以,也许彻底放弃C式循环,未尝不是一个好选择
关于for循环------swift3.0的更多相关文章
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- Swift3.0变化分享
Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...
- swift3.0变化总结
Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...
- Swift3.0都有哪些变化
从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行.在W ...
- Swift3.0语言教程查找字符集和子字符串
Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...
- Swift3.0 函数闭包与OC Block
刚接触Swift,如有不对的点,欢迎指正.转载请说明出处 定义一个基本函数 //定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> S ...
- iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)
今天博客中,我们就来实现一下一些常用资讯类App中常用的分类选择的控件的封装.本篇博客中没有使用到什么新的技术点,如果非得说用到了什么新的技术点的话,那么勉强的说,用到了一些iOS9以后UIColle ...
- 突然兴起复习一下Swift3.0
/// 参考Swift3.0.1文档 /// 摘录来自: Apple Inc. "The Swift Programming Language (Swift 3.0.1)". iB ...
- swift学习笔记 - swift3.0用GCD实现计时器
swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法: 先贴代码: // 定义需要计时的时间 var timeCount = 60 ...
随机推荐
- Python报错UnicodeDecodeError: ascii codec can t decode byte 0xe0 ...解决方法
用命令(python setup.py install)安装webpy时候总是报错 在网上搜索到的解决方法如下: 1. 这是Python 2 mimetypes的bug 2. 需要将Python2.7 ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- Linux指令
文件指令 ls: ls -a :把隐藏的文件显示 ls -l 显示文件的详细信息 -lh 也是显示文件的详细信息,只是文件的大小是以k单位 ls -ld 显示指定目录下的信息 mkdir: mkd ...
- CSS之表单元素
表单就是收集用户信息的,就是让用户填写的.选择的. 1 <div> 2 <h3>欢迎注册本网站&l ...
- ORA-01438: 值大于为此列指定的允许精度
Number的数据声明如下:表示 作用 说明Number(p, s) 声明一个定点数 p(precision)为精度,s(scale)表示小数点 ...
- System.InvalidOperationException : 不应有 <Response xmlns=''>。
xml如下: <?xml version="1.0" encoding="UTF-8"?> <Response version="2 ...
- 神经网络模型及R代码实现
神经网络基本原理 一.神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias ).则神 ...
- 用R做逻辑回归之汽车贷款违约模型
数据说明 本数据是一份汽车贷款违约数据 application_id 申请者ID account_number 账户号 bad_ind 是否违约 vehicle_year ...
- Web 常用功能测试方法
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能.常用的测试方法如下: 1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确. 2. 相 ...
- 耿丹CS16-2班助教总结
Deadline: 2016-1-7 11:59pm 开篇有言 --又是一年末,不似风光,却添风霜,顶霾前进,踽踽独行,可乎? 助教那些事儿 助教这份工作是之前就担任过的,很羞愧,当时才担任了几天就撒 ...