Swif学习之流程控制(if, switch,for,guard
2017-07-02 本文已影响51人
coderhlt
说明
以前一直用的是oc最近才开始学习swif,特记录一下swif的学习,主要记录下oc与swif的区别。
- 导入框架
OC导入框架: #import <UIKit/UIKit.h>
import UIKit
- 变量初始化
OC定义标识符: int a = 20; a = 10;
//定义格式: let/var 标识符名称 : 标识符类型 = 赋值
var a : Int = 20
a = 10
let b : Double = 3.14
- 关于分号
print("hello world")//结尾的分号可以省略
print(1);print("123');//如果一行中有多条语句,则不可省略
- 方法的调用
// 在swift中调用方法,统一使用 点语法
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let view : UIView = UIView(frame: rect)
view.addSubview(btn)
- Swift枚举类型:
// 如果可以根据上下文语法推断出该枚举的类型可以直接 .具体类型
let btn : UIButton = UIButton()
btn.setTitle("按钮", for: .normal)
- 关于隐式转换
// swift没有隐式转换,因此两种不同类型的变量运算时,必须先转换成同一类型
let m = 20
let n = 10.5
// let result = m + n 错误写法
let result1 = Double(m) + n// 将Int类型转成Double: Double(标识符)
let result2 = m + Int(n)// 将Double类型转成Int : Int(标识符)
let a : Double = 2.44
let b : CGFloat = 3.55
let result = a + Double(b)
- if语句
a. if后面的()可以省略掉
if a > 0 {
print("a大于0")
}
b. 没有非0(nil)即真
if a {错误语法
print("a大于0")
}
if a != 0 {//必须这样,swift没有非0(nil)即真
print("a不等于0")
}
- switch语句
a.switch后面的()可以省略
switch sex {
case 0:
print("男")
break
case 1:
print("女")
break
default:
print("其它")
break
}
b. case语句结束时,可以不加break
switch sex {
case 0:
print("男")
case 1:
print("女")
default:
print("其它")
}
c.在swift中,switch后面case可以判断多个条件
switch sex {
case 0, 1:
print("正常人")
default:
print("非正常人")
}
d.如果希望case结束时,产生case穿透.case结束时,加上fallthrough
case 0,1:print("男")
fallthrough
case 2:print("女1")
default:print(1)
e.判断字符串
let a= "123"
case "1":
print("1")
case "2":
print("2")
case "3":
print("3")
case "123":
print("123")
default:
print("不合理的操作符")
}
f.判断区间类型
let score = 88
switch score {
case 0..<60:
print("不及格")
case 60..<80:
print("及格")
case 80..<90:
print("良好")
case 90...100:
print("优秀")
default:
print("不合理的分数")
}
- for语句:
// Swift中for循环现在只支持区间遍历
for (var i = 0; i < 10; i++) {
print(i)
}//swif3.0之后不再支持,现在这样写会报错
for i in 0..<10 {//区间遍历
print(i)
}
// 在swift开发中,如果一个变量/常量暂停不会使用,那么可以使用_来代替
for _ in 0..<10 {
print("hello world")
}
- guard语句
guard <#condition#> else // 如果条件成立,者会执行后面的代码
{
<#statements#> // 如果条件不成立,则会执行{}中的语句,并且{}中必须跟上
}
//假设情景:去网吧上网
let age = 20
let a = 1 //a=0表示没带钱
let b = 0 //b=0表示没带身份证
func online(age : Int){
if age>18 {
if a==1 {
if b==1 {
print("可以上网")
}else{
print("回家拿身份证去")
}
}
else{
print("回家拿钱去")
}
}else{
print("等你满18岁再来")
}
}
online(age: age)
以上情景使用if层层嵌套,我们可以使用guard条件语句代替显得更优雅
func oneline(age:Int){
guard age>18 else { // 如果条件成立,者会执行后面的代码块
print("等你满18岁再来") // 如果条件不成立,则会执行{}中的语句,并且{}中必须跟上
return
}
guard a==1 else {
print("回家拿钱去")
return
}
guard b==1 else {
print("回家拿身份证去")
return
}
}
oneline(age: age)