文档章节

swift 流程控制

法斗斗
 法斗斗
发布于 2016/03/03 13:16
字数 1145
阅读 5
收藏 0
点赞 1
评论 0
//

//  main.swift

//  swift流程控制

//

//  Created by zhangbiao on 14-6-13.

//  Copyright (c) 2014 理想. All rights reserved.

//


import Foundation


// swift 流程控制


/*

swift 流程控制主要分为顺序   分支   循环

1.顺序:从上到下依次执行,遇到函数调用,调用完毕函数继续执行


2.分支:根据分支条件进行分支

      1if{} else{}

      2switch {case:...}


3.循环:循环执行,遇到结束条件

      1while  do{} while

      2 for in  for(){}

4.循环分支中,控制流程的四个关键字 continue  break  fallthrough  return(多用于函数中) 相关说明




*/


func testfunc()

{

    

    

//1.顺序(略)---------------------------------------------------------------------------------------

    

//2.分支--------------------------------------------------------------------------------------------

    //声明一个Bool 类型的变量 赋值为true

    var bgen:Bool = true


    //分支

    if(bgen)

    {

        println(bgen);

    }else

    {

        println(bgen);

    }

    

    //分支 switch {case:...}

    /*

     特点:(1)支持任意类型的数据以及各种比较操作(不仅仅是整数以及测试相等)

          (2)运行switch中匹配到的子句之后,程序会退出switch语句 ,并不会继续向下运行,所以不需要在每个子句结尾写break  如果想继续执行 在原来break 的位置写 fallthrough  即可

    */

    

    

    

    ////switch ()中的值可以是Int

   var value=123;

    switch(value)

    {

    case 123:

        println("1")

        

        fallthrough//继续执行

    case 2:

        println("2")

    

    case 3:

        println("3")

    default:

        println("没有匹配的")

    }

    

    

    //switch ()中的值可以是字符串

    switch("理想")

        {

    case "理想":

        println("理想")

        

    case "理想2":

        println("理想2")

        

    case "理想3":

        println("理想3")

    default:

        println("没有匹配的字符")

    }

    

    

    //case 中可以有多个匹配项

    switch("abc")

    {

    case "123":

        println("123");

        

    case "456","abc":

        println("123  abc ");

        

    default:

        println("没有找到合适的匹配");

    }

    

    

    //   比较操作   hasSuffix 函数是判断字符字符串是不是以其参数结尾

    switch("理想 and swift")

    {

    case let x  where x.hasSuffix("swift"):  // 注意此时的 x 的值就是switch()中的值where 额外的判断条件

        println("swift");

    case  "理想":

        println("理想");

    default:

        println("me");

    }

    

//2.循环--------------------------------------------------------------------------------------------

    //循环

    //while(){}  do{}while()  重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾

    

    var i:Int = 0;

    while( i<10)

    {

        i++;

        println(i);

    }


    do

    {

    i--;

        println(i);

        

    }while(i>0);

   

    

    

    

    //for in 

    //使用for-in循环来遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符

    

     for index in 1...5

    {

        println("index=\(index)");

        

    }

    //解释... 区间的意思    1...5 的意思 [1,5]  1..5 的意思  [1,5)    index是一个每次循环遍历开始时被自动赋值的常量。这种情况下,index在使用前不需要声明,只需要将它包含在循环的声明中,就可以对其进行隐式声明,而无需使用let关键字声明。 index常量只存在于循环的生命周期里。如果你想在循环完成后访问index的值,又或者想让index成为一个变量而不是常量,你必须在循环之前自己进行声明。

    

    //如果你不需要知道区间内每一项的值,你可以使用下划线(_)替代变量名来忽略对值的访问

    var num=0;

    for _ in 1...5

    {

        num++;

        println("num =\(num)");

    }


    //遍历字符

    for str in "ABCDE"

    {

        println("str=\(str)");

    }

    

    

    

    //for(){  }

    

    for(var i=0; i<10; i++)

    {

        println("i=\(i)");

        

    }

    

    

//4.循环分支中,控制流程的四个关键字说明--------------------------------------------------------------------------------------------

  

    //continue语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。就好像在说本次循环迭代我已经执行完了,但是并不会离开整个循环体。

    

   //break语句会立刻结束整个控制流的执行。当你想要更早的结束一个switch代码块或者一个循环体时,你都可以使用break语句。当在一个switch代码块中使用break时,会立即中断该switch代码块的执行,并且跳转到表示switch代码块结束的大括号(})后的第一行代码。

    

    

  //fallthrough  fallthrough关键字不会检查它下一个将会落入执行的 case 中的匹配条件。fallthrough简单地使代码执行继续连接到下一个 case 中的执行代码,这和 C 语言标准中的switch语句特性是一样的

    

  //return  在函数中具体讲

    

    

}


// 调用函数

testfunc();


//执行结果:

true

1

2

理想

123  abc 

swift

1

2

3

4

5

6

7

8

9

10

9

8

7

6

5

4

3

2

1

0

index=1

index=2

index=3

index=4

index=5

num =1

num =2

num =3

num =4

num =5

str=A

str=B

str=C

str=D

str=E

i=0

i=1

i=2

i=3

i=4

i=5

i=6

i=7

i=8

i=9

Program ended with exit code: 0

© 著作权归作者所有

共有 人打赏支持
法斗斗
粉丝 20
博文 336
码字总数 6335
作品 0
杨浦
程序员
Swift讲解专题六——流程控制

Swift讲解专题六——流程控制 一、引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情。Swift中提供了许多强大的...

珲少 ⋅ 2016/05/12 ⋅ 0

智捷公开课马上开始了--第一系列读《Swift开发指南(修订版) 》看Swift视频教程

引用: 智捷课堂携手51CTO学院、图灵教育联合举办iOS线上培训就业班系列体验公开课。 分享移动开发、移动设计方向最新,最热,最抢眼技术热点以及设计经验。我们每周将最少举办一次公开课,同...

智捷课堂 ⋅ 2015/01/15 ⋅ 0

OpenStack Swift集群与Keystone的整合使用说明

之前已经介绍了OpenStack Swift集群和Keystone的安装部署,最后来讲一讲Swift集群与Keystone的整合使用吧。 1. 简介 本文档描述了Keystone与Swift集群的整合使用方法,即Swift通过Keystone完...

长平狐 ⋅ 2013/11/25 ⋅ 0

OpenStack Swift client开发

如果你搭建好了Swift环境 ,你应该可以通过Swift 命令 来尝试去测试上传下载等功能,这是因为在安装Swift的时候,通常会安装一个python-swiftclient客户端,这个一个python的开源项目 同样使...

zhouxingxing ⋅ 2012/09/05 ⋅ 11

自定义选项卡实战swift(内附源码且精讲知识点)

App开发本质上是一种对人性的把握,我们在项目开发过程中经常需要自定义很多精美的控件,以此来获得更好的用户体验。 因此,掌握自定义控件是移动应用开发必备的一项技能。本篇文章我们就来快...

充电实践 ⋅ 05/26 ⋅ 0

【原创】OpenStack Swift源码分析(五)keystone鉴权

如何想用使用 Swift的服务,都需要经过认证鉴权,例如,某用户想上传一个文件X,首先该用户需要有权限进入到系统中,然后他需要有可以上传文件的权限,早期版本Swift有自己的实现认证鉴权的程...

zhouxingxing ⋅ 2012/10/16 ⋅ 13

Openstack重启服务

=================================================================== ' 重启dashboard '=================================================================== service httpd restart se......

binhu ⋅ 2016/08/17 ⋅ 0

还记得SWIFT银行系统吗?现推出了安全框架……

        2017年使用国际银行业合作SWIFT系统的银行频频发生被盗,这和SWIFT系统存在的严重安全问题不无关系。   2018年,国际银行结算系统SWIFT对成员银行强制实施SWIFT强制实施新的...

嘶吼RoarTalk ⋅ 01/05 ⋅ 0

OpenStack架构快速了解

OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为...

xpleaf ⋅ 2017/02/19 ⋅ 0

从零开始(4)

( 202 ) 修改tabbar背景颜色 详情请点此 ( 201 ) TextField代理 详情请点此 ( 200 ) UIAcivityViewController显示中文 详情请点此 ( 199 ) 用UIAcivityViewController分享图片 详情请点此 ( ...

阴雨音语 ⋅ 2016/06/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 59分钟前 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部