对照Java学习Swift--控制流(Control Flow)
来源:互联网 发布:阳西县网络问政 编辑:程序博客网 时间:2024/06/05 17:06
Java和Swift的大部分控制语句是一样,但是也有些不一样,Java中关键字后面如果不止一个变量,则需要用括号括起来,Swift则不需要,下面我们来详细看看各个控制流语句。
For-In
这是Swift里面特有的控制流语句,在Java之中是没有的,但是Java之中有个foreach语句,算是跟这个比较像。用法很简单,循环来遍历一个集合里面的所有元素:
for index in 1...5 { print("\(index) times 5 is \(index * 5)")}
For
这个Java跟Swift一样,使用条件判断和递增方法来遍历集合里面的所有元素:
for var index = 0; index < 3; ++index { print("index is \(index)")}
While 循环
while循环运行一系列语句直到条件变成false。这类循环适合使用在第一次迭代前迭代次数未知的情况下。包括:
- while循环,每次在循环开始时计算条件是否符合;
- repeat-while循环,每次在循环结束时计算条件是否符合。
while循环Swift跟Java一样,repeat-while跟Java里面的do-while是一样的,我们就不多说了。
If语句
这个跟Java完全一样,判断语句,最基本的控制流,很简单。
Switch语句
这个跟Java有些不一样,Java中我们需要写break来中断一个case分支,swift则不需要,会自动中断case分支。还有一个不同就是switch表达式比Java更广泛,Java 8以前只支持int、byte、char、short,以后才支持String,但是Swift支持区间匹配,字符串,字符,元组类型,case分支还支持值绑定(Value Bindings)和where语句来判断额外的条件,比Java中的Switch语句更加强大。我们看个例子:
let yetAnotherPoint = (1, -1)switch yetAnotherPoint {case let (x, y) where x == y: print("(\(x), \(y)) is on the line x == y")case let (x, y) where x == -y: print("(\(x), \(y)) is on the line x == -y")case let (x, y): print("(\(x), \(y)) is just some arbitrary point")}
Continue和Break
Continue和Break跟Java中的一样,不必多说。
贯穿(Fallthrough)
贯穿(Fallthrough)是swift里面特有的,默认情况下Switch语句的case分支是自动中断的,如果加上Fallthrough就会自动贯穿到下一个case分支,就跟Java中不加break关键字是一样的效果。
带标签的语句
这个是swift中特有的,如果我们有两个for循环,默认情况下break只能中断第一个for循环,但是使用带标签的语句可以同时中断两个for循环语句,非常方便,我们看个例子:
a:for var i = 0;i<10;++i{ for var j = 0;j < 10;++j{ if i == j{ print("i=\(i) and j=\(j)") break a } }}
这个时候就只会打印i=0 and j=0,因为这个时候i==j整个循环就退出了,不会再执行了,很方便。
提前退出guard
guard语句也是Swift特有的也很方便,当然在Java中可以有类似的方法来实现,我们还是先来看例子吧:
func greet(){ var first = 10; guard first > 10 else{ print("first是小于或者等于10的") return } print("first是大于10的")}greet()
结果打印出”first是小于或者等于10的”,我们看到first大于10,为假,就执行else后面的语句,这个时候整个函数退出,不再执行后面的语句,很好理解吧,灵活的使用的可以增加代码的可读性!!!
- 对照Java学习Swift--控制流(Control Flow)
- Swift 控制流(Control Flow)
- Swift Control Flow控制流
- swift学习笔记 --- Control Flow
- [iOS翻译]《The Swift Programming Language》 Control Flow - 控制流
- Swift笔记(四)之控制流(Control Flow)
- 串口流控制(flow control)
- 串口流控制(flow control)
- 串口流控制(flow control)
- 串口流控制(flow control)
- Exceptional Flow Control(异常控制流)
- 串口流控制(flow control)
- (JAVA SE 学习笔记)Java.SE.第006讲.流程控制语句.Flow.Control.Statement
- knockout控制流Control Flow
- 控制流 Flow of Control
- 学习TCP协议的流量控制(flow control)小结
- (JAVA SE 学习笔记)Java.SE.第007讲.流程控制语句.续.Flow.Control.Statement.Cont
- 对照Java学习Swift--函数(Functions)
- uva348 - Optimal Array Multiplication Sequence
- 数组和指针
- LeetCode 3Sum Closest
- 3.19任务
- 不能在析构函数里面抛出异常 http://blog.csdn.net/wind19/article/details/8213406
- 对照Java学习Swift--控制流(Control Flow)
- poj 1182 食物链
- Mac下对Android app进行反编译
- HR最想看见的一个能返回二进制数中1的个数的函数
- fedora 23 lvm2格式 根目录磁盘空间不足 扩容
- Swizzling钩子
- C语言中的关键字
- gcc 和 gdb简介
- java 导出Excel