//
// main.swift
// swift-流程控制
//
// Created by yidong on 16/9/28.
// Copyright © 2016年 东哥. All rights reserved.
//
import Foundation
/*
swift 流程控制主要分为: 顺序 分支 循环
1.顺序:从上到下依次执行,遇到函数调用,调用完毕函数继续执行
2.分支:根据分支条件进行分支
(1)if{} else{}
(2)switch {case:...}
3.循环:循环执行,遇到结束条件
(1)while 和 do{} while
(2) for in 和 for(){}
4.循环分支中,控制流程的四个关键字 continue break fallthrough return(多用于函数中) 相关说明
*/
func testfunc()
{
//1.顺序(略)---------------------------------------------------------------------------------------
//2.分支--------------------------------------------------------------------------------------------
//声明一个Bool 类型的变量 赋值为true
var bgen:Bool = true
//分支
if(bgen)
{
print(bgen);
}else
{
print(bgen);
}
//分支 switch {case:...}
/*
特点:(1)支持任意类型的数据以及各种比较操作(不仅仅是整数以及测试相等)
(2)运行switch中匹配到的子句之后,程序会退出switch语句 ,并不会继续向下运行,所以不需要在每个子句结尾写break 如果想继续执行 在原来break 的位置写 fallthrough 即可
*/
switch ()中的值可以是Int
var value=123;
switch(value)
{
case 123:
print("1")
fallthrough; //继续执行
case 2:
print("2")
case 3:
print("3")
default:
print("没有匹配的")
}
//switch ()中的值可以是字符串
switch("理想")
{
case "理想":
print("理想")
case "理想2":
print("理想2")
case "理想3":
print("理想3")
default:
print("没有匹配的字符")
}
//case 中可以有多个匹配项
switch("abc")
{
case "123":
print("123");
case "456","abc":
print("123 abc ");
default:
print("没有找到合适的匹配");
}
// 比较操作 hasSuffix 函数是判断字符字符串是不是以其参数结尾
switch("理想 and swift")
{
case let x where x.hasSuffix("swift"): // 注意此时的 x 的值就是switch()中的值 where 额外的判断条件
print("swift");
case "理想":
print("理想");
default:
print("me");
}
//2.循环--------------------------------------------------------------------------------------------
//循环
//while(){} 和 repeat{}while() 重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾
var i:Int = 0;
while( i<10)
{
// i++;(Swift3.0之后就不用了)
i += 1;
print(i);
}
repeat//(用 repeat while 取代了 do while)
{
// i--;(Swift3.0之后就不用了)
i -= 1;
print(i);
}while(i>0);
//for in
//使用for-in循环来遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符
for index in 1...5
{
print("index=\(index)");
}
//解释... 区间的意思 1...5 的意思 [1,5] 1..5 的意思 [1,5) index是一个每次循环遍历开始时被自动赋值的常量。这种情况下,index在使用前不需要声明,只需要将它包含在循环的声明中,就可以对其进行隐式声明,而无需使用let关键字声明。 index常量只存在于循环的生命周期里。如果你想在循环完成后访问index的值,又或者想让index成为一个变量而不是常量,你必须在循环之前自己进行声明。
//如果你不需要知道区间内每一项的值,你可以使用下划线(_)替代变量名来忽略对值的访问
var num=0;
for _ in 1...5
{
num += 1;
print("num =\(num)");
}
//遍历字符
for str in "ABCDE".characters
{
print("str=\(str)");
}
//for(){ }
//Swift 3 之后去C化了
for i in 0...10
{
print("i=\(i)");
}
//4.循环分支中,控制流程的四个关键字说明--------------------------------------------------------------------------------------------
//continue语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。就好像在说“本次循环迭代我已经执行完了”,但是并不会离开整个循环体。
//break语句会立刻结束整个控制流的执行。当你想要更早的结束一个switch代码块或者一个循环体时,你都可以使用break语句。当在一个switch代码块中使用break时,会立即中断该switch代码块的执行,并且跳转到表示switch代码块结束的大括号(})后的第一行代码。
//fallthrough fallthrough关键字不会检查它下一个将会落入执行的 case 中的匹配条件。fallthrough简单地使代码执行继续连接到下一个 case 中的执行代码,这和 C 语言标准中的switch语句特性是一样的
//return 在函数中具体讲
}
// 调用函数
testfunc();
// main.swift
// swift-流程控制
//
// Created by yidong on 16/9/28.
// Copyright © 2016年 东哥. All rights reserved.
//
import Foundation
/*
swift 流程控制主要分为: 顺序 分支 循环
1.顺序:从上到下依次执行,遇到函数调用,调用完毕函数继续执行
2.分支:根据分支条件进行分支
(1)if{} else{}
(2)switch {case:...}
3.循环:循环执行,遇到结束条件
(1)while 和 do{} while
(2) for in 和 for(){}
4.循环分支中,控制流程的四个关键字 continue break fallthrough return(多用于函数中) 相关说明
*/
func testfunc()
{
//1.顺序(略)---------------------------------------------------------------------------------------
//2.分支--------------------------------------------------------------------------------------------
//声明一个Bool 类型的变量 赋值为true
var bgen:Bool = true
//分支
if(bgen)
{
print(bgen);
}else
{
print(bgen);
}
//分支 switch {case:...}
/*
特点:(1)支持任意类型的数据以及各种比较操作(不仅仅是整数以及测试相等)
(2)运行switch中匹配到的子句之后,程序会退出switch语句 ,并不会继续向下运行,所以不需要在每个子句结尾写break 如果想继续执行 在原来break 的位置写 fallthrough 即可
*/
switch ()中的值可以是Int
var value=123;
switch(value)
{
case 123:
print("1")
fallthrough; //继续执行
case 2:
print("2")
case 3:
print("3")
default:
print("没有匹配的")
}
//switch ()中的值可以是字符串
switch("理想")
{
case "理想":
print("理想")
case "理想2":
print("理想2")
case "理想3":
print("理想3")
default:
print("没有匹配的字符")
}
//case 中可以有多个匹配项
switch("abc")
{
case "123":
print("123");
case "456","abc":
print("123 abc ");
default:
print("没有找到合适的匹配");
}
// 比较操作 hasSuffix 函数是判断字符字符串是不是以其参数结尾
switch("理想 and swift")
{
case let x where x.hasSuffix("swift"): // 注意此时的 x 的值就是switch()中的值 where 额外的判断条件
print("swift");
case "理想":
print("理想");
default:
print("me");
}
//2.循环--------------------------------------------------------------------------------------------
//循环
//while(){} 和 repeat{}while() 重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾
var i:Int = 0;
while( i<10)
{
// i++;(Swift3.0之后就不用了)
i += 1;
print(i);
}
repeat//(用 repeat while 取代了 do while)
{
// i--;(Swift3.0之后就不用了)
i -= 1;
print(i);
}while(i>0);
//for in
//使用for-in循环来遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符
for index in 1...5
{
print("index=\(index)");
}
//解释... 区间的意思 1...5 的意思 [1,5] 1..5 的意思 [1,5) index是一个每次循环遍历开始时被自动赋值的常量。这种情况下,index在使用前不需要声明,只需要将它包含在循环的声明中,就可以对其进行隐式声明,而无需使用let关键字声明。 index常量只存在于循环的生命周期里。如果你想在循环完成后访问index的值,又或者想让index成为一个变量而不是常量,你必须在循环之前自己进行声明。
//如果你不需要知道区间内每一项的值,你可以使用下划线(_)替代变量名来忽略对值的访问
var num=0;
for _ in 1...5
{
num += 1;
print("num =\(num)");
}
//遍历字符
for str in "ABCDE".characters
{
print("str=\(str)");
}
//for(){ }
//Swift 3 之后去C化了
for i in 0...10
{
print("i=\(i)");
}
//4.循环分支中,控制流程的四个关键字说明--------------------------------------------------------------------------------------------
//continue语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。就好像在说“本次循环迭代我已经执行完了”,但是并不会离开整个循环体。
//break语句会立刻结束整个控制流的执行。当你想要更早的结束一个switch代码块或者一个循环体时,你都可以使用break语句。当在一个switch代码块中使用break时,会立即中断该switch代码块的执行,并且跳转到表示switch代码块结束的大括号(})后的第一行代码。
//fallthrough fallthrough关键字不会检查它下一个将会落入执行的 case 中的匹配条件。fallthrough简单地使代码执行继续连接到下一个 case 中的执行代码,这和 C 语言标准中的switch语句特性是一样的
//return 在函数中具体讲
}
// 调用函数
testfunc();