Swift基础01
常量和变量的定义
- 用 var 来定义一个变量,用 let 定义一个常量
- 变量或常量的后面接一个 : Int, 指定数据类型
- 在 swift 中,布尔值用的是 true/false
var a: Int = 5 //定义一个Int型变量
var b: Float = 6
var c: Double = 5.6
var d: Bool = true //布尔值
var e: Bool = false
var f = (6, "hello") //定义一个元组变量
let aa: Int = 5 //定义一个Int型常量
类型的自动推导
- swift会根据等号右边的值,自动推导变量/常量的类型
- Xcode中按 option + 左鼠标键 : 查看变量/常量的数据类型
- 变量或常量,如果没有初始值,就需要指定数据类型
var bb = 5 //自动推导为Int型
var bc = 5.5 //自动推导为Float型
let str = "hello, world" //自动推导为String型
var dd:Int
没有隐式转换
- swift 不同类型进行运算不会自动执行隐式转换,需要强制转换
var sum = bb + Int(bc) //如果不进行强制类型转换则会报错
var sum2 = Double(bb) + bc
if条件语句
- if后面的条件语句,可以省略小括号
- if后面的大括号,一定要加。不管它是否只有一条语句
- swift 没有非零即真的概念,条件语句必须是布尔值或者是条件表达式
let a = 4
if a > 4 {
print("哟, a 大于 10 哦")
} else if a < 5 {
print("哟, a 小于 5 哦")
} else {
print("hello world")
}
switch语句
- swift 中的 switch 可以判断任何类型
- case 后面必须有执行语句
- break 可以不写
- case 后面的执行语句不需要加 大括号
- switch 必须覆盖所有条件,不然会报错。如果覆盖不了,可以加个 default
let score = 70
//oc 的 switch
switch score {
case 60:
print("hello")
print("爹妈不亲")
case 70:
print("及格了,ok")
case 80:
print("优秀")
default:
print("仍需努力")
}
// switch 判断字符串类型
let score1 = "70"
switch score1 {
case "60":
print("爹妈不亲")
case "70":
print("及格了,ok")
case "80":
print("优秀")
default:
print("仍需努力")
}
// switch 做区间判断
// 区间运算符 0..<5: 相当于数学里面的 [0, 5)
// 区间运算符 0...5: 相当于数学里面的 [0, 5]
let score2 = 80
switch score2 {
case 0..<60:
print("hello")
print("爹妈不亲")
case 60...80:
print("及格了,ok")
case 80...100:
print("优秀")
default:
print("仍需努力")
}
// 绑定:在条件判断语句中。将需要判断的值 x,赋给一个临时的变量/常量 y。这个过程就是将 x 和 y 绑定。 在后面我们可直接使用 y
let x = 50
switch x {
case let y where y < 60: //执行此处
print("hello, \(y)")
print("爹妈不亲")
case let y where y < 80:
print("及格了,ok")
case let y where y < 100:
print("优秀")
default:
print("仍需努力")
}
循环
- for循环
//oc风格的 for 循环
for var i = 0; i < 10 ; i++ {
//print("I love you")
}
//用区间运算符做循环的时候, i 不需加加 var 和 let
for i in 0..<10 {
print("I love you\(i)")
}
//如果我们不需要用 i 的值,可以用一个 _ 把 i 忽略掉
for _ in 0..<10 {
print("I love you")
}
- while循环
var a = 5
while a > 0 {
print("好好听课")
a--
}
- 类似do…while循环
var b = 5
repeat {
print("====好好听课")
b--
} while b > 0
可选值
- 一个变量或常量,可能有值,可能没有值,就叫可选值
- 变量可选值,没有赋值之前,是 nil
- 常量可选值,在没有赋值之前,它是空的,使用它会直接报错
- 在使用可选值之前,需要对可选值,强行解包,给可选值加一个!如果强行解包发现没值,编译器会直接报错。
var a: Int? = 5 //定义变量可选值
let b: Int? //定义常量可选值
var c = a! + 5
可选绑定
使用可选值时,需要注意可选值是否有值,如果使用了没有值得可选值,会使代码出错
使用可选值的三种方法:
// 1.先判断可选值,是否为 nil,不为nil才使用
// 这个方法比较 low,很少用
var str: String? = "hello"
var age: Int? = 10
var str1 = "aa"
if str != nil && age != nil{
if age! > 10 {
var st2 = str! + str1
//print(st2)
}
}
//2 .可选绑定
//主流写法
//可选绑定,就在判断条件语句中,定义一个常量或变量 x,将可选值 y 赋值给这个常量或变量。如果可选值 y 有值,则绑定成功,可以在后面直接使用 x。如果没有值,绑定不成功,做异常处理。
//如果需要对多个值进行可选绑定,可以用 , 分隔开
//如果想修改被绑定的值 x, 需要用 var。修改了 x。y 不会变
//可选绑定还可以接 where 来增加我们的条件判断的功能
if var str = str, let age = age where age > 10{
str = "world"
print(str)
print(str)
} else {
//异常处理
}
//3. guard let/var
//guard let 和 if let 逻辑相同,语法相反,绑定成功的逻辑代码需要写在大括号的外面。
//guard 的大括号里面,需要我们 return
//guard let 可以减少代码的层级
func guardlet() {
guard let str = str else {
return
}
print("========\(str)")
}
guardlet()