对照Java学习Swift--控制流(Control Flow)

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后面的语句,这个时候整个函数退出,不再执行后面的语句,很好理解吧,灵活的使用的可以增加代码的可读性!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值