swift:入门知识之控制流
1、swift语句中的控制流和其他语言大致相同,使用if和switch作为条件控制。使用 for-in、for、while、do-while作为循环。
2、区别之处:小括号不是必须的,但是主体的大括号还是必需的,,,,
3、在if语句中,条件必须是布尔表达式,这意味着if score{...}是错误的,不能隐含的与0比较
4、可以一起使用if和let来防止值的丢失。这些值是可选的。可选的值包含一个值或者包含一个nil来指定值还存不存在。写一个问号"?"在类型后表示值是可选的。
5、在switch-case语句中,switch可以接收任何类型的变量或语句作为条件,不再限制于字符类型、整型等,在一条语句结束后,不需要再写上break,但是最后的defalut不能省略。switch的每一个case至少有一条语句,不允许后面跟一个空语句。
6、可以在循环中保持一个索引,通过".."来表示索引范围或明确一个初始值、条件、增量。用"..<"表示不算上边界,用"..."表示算上边界
7、在控制流中有一个新的类型元组,它可以同时存放很多的值,可以通过"元组名.索引"来获取其中值,也可以遍历获取。当然也可以通过键或者函数获取。
具体举例如下:
类型后面带一个?代表前面如果是nil就执行后面的部分,如果不是nil,后面就不执行,表示后面的数据是可选的
var name:String? = "Tom"
name == nil //false
在if中使用let temp = name,如果temp是nil,后面不执行,相反则执行
//name = nil
if let temp = name{
println("hello \(temp)") //"hello Tom"
}
传统for循环语句,不需要小括号
//传统for循环
let array = [,,,,]
var sum1 =
for var i = ; i<; i++
{
sum1 += array[i]
}
sum1 //输出结果
高级for循环,不需要小括号,判断时的条件必须是布尔类型,需要是具体的算数逻辑或关系逻辑 如>、<、==
//高级for循环
let Allscore = [,,,,]
var sum =
for eachscore in Allscore{
if eachscore > 50 //使用关系判断的比较方式作为判断条件
{
sum +=
}
else
{
sum +=
}
}
sum //输出结果
采用.代替省略的索引,使用..<表示不包括边界,如果包含边界,使用...
//不包括索引5
for j in ..<{
sum1 += array[j]
}
sum1 //输出结果
swicth后的表达式可以是各种类型
case后面可以根很多种情况
case后面用let x where 进行分类
case后面不能用break
defalut不能省略
var color = "lightgray"
var commment = ""
switch color
{
case "red":
commment = "激情"
case "green","blue":
commment = "忧郁"
case let x where x.hasSuffix("gray"):
commment = "灰色心情-\(x)"
default:
commment = "其他心情"
}
commment //输出结果
新类型元组的使用,可以存放多个值,通过"元组.索引"获取值,也可以遍历获取
//新类型:元组
var tuples = ("Tom",)
tuples. = "Jobs" //获取元组中第一个值
tuples. = 23 //获取元组中第二个值
println(tuples) //元组使用
let dictionary = [
"Prime":[,,,,,],
"Fibonacci": [, , , , , ],
"Square": [, , , , ],
]
var largest = 0
//通过for高级循环遍历元组中的数据
for (kind,numbers) in dictionary{
for number in numbers{
if largest < number{
largest = number
}
}
}
largest //输出最大值
where循环语句,也是不用使用小括号了
//where语句的使用(明显的区别就是不适用()括号了)
//方式一
var num =
while num < {
num = num *
}
num
//方式二
var tempNum =
do{
tempNum = tempNum *
}while tempNum <
tempNum
switch语句拓展:

多个模式




swift:入门知识之控制流的更多相关文章
- Swift经典知识整理
1 关于Swift Swift 是一种适用于 iOS 和 OS X 应用的全新编程语言,它建立在最好的 C 和 Objective-C 语言之上,并且没有 C 语言的兼容性限制.Swift 采用安全 ...
- Swift入门篇-闭包和函数
今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...
- Swift入门篇-循环语句
今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...
- Swift入门篇-字符串和字符
今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...
- Swift入门篇-基本类型(2)
现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...
- Swift入门篇-Hello World
提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...
- Swift入门学习之一常量,变量和声明
版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...
- [置顶] Mysql存储过程入门知识
Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...
- Swift入门教程:基本语法大全
原文:Swift入门教程:基本语法大全 简介: ...
随机推荐
- c++ goto的使用
c++ goto 语句的使用 1.定义一个类似标签的东西lable 2.使用goto关键字,跳转到lable, goto lable #include <iostream> #includ ...
- Careercup - Microsoft面试题 - 4840369632051200
2014-05-10 07:06 题目链接 原题: Suppose you have a collection of collection Eg : CEO-> Vps-> GMs -&g ...
- 利用Python获取ZOJ所有题目的名字
先贴出代码,行数比较少,仅仅用正则表达式分析出题目Title所在的标签并把题目Title提取出来 import urllib.request import re import dbm #定义URL,其 ...
- C语言面向对象风格编程
前言 本文略谈C面向对象风格编程,如何使用过程式语言去模拟面向对象的特性?C面向对象的方式和形式很多,不一而足,本文的代码形式是模拟部分C++面向对象关键词并赋予其特性,这种方式对于初级程序员比较好理 ...
- 代码复用 -- 深入了解javascript
/* 代码复用 */ /* 一.避免 */ /* 模式1:默认模式 */ function Parent() { this.name = "123"; } Parent.proto ...
- Mysql 慢查询设置
Mysql慢查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”. === ...
- c++ swap 函数
转载地址 1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template <class T> void swap ( T& a, T& b ) { T ...
- SVN--(Eclipse)在历史记录中比较版本差异
前言 在SVN中比较各版本的差异是非常重要的功能. 方式 看图说话 结果
- Leetcode#151 Reverse Words in a String
原题地址 将单词按空格分词,然后倒序拼接即可 代码: void reverseWords(string &s) { vector<string> words; ; ; ; i &l ...
- Leetcode#59 Spiral Matrix II
原题地址 相比于Spiral Matrix(参见这篇文章)要简单一些,因为是方阵,所以代码简洁一些. 注意当n是奇数的时候,中心小块要单独赋值(代码21行) 代码: vector<vector& ...