// 高级用法 (面试)
// 可选类型 值绑定(可选类型结合 if-else 使用), 都要定义局部变量
var bindingOptional:Int!
// local生命周期 - if 结束
// * 局部变量后面必须是可选类型, 其实判断的是可选类型是否为空, 当为空时,直接走 else, 都有值时,走 if,顺便完成局部变量的赋值,方便我们在 if 花括号中对局部变量的使用
if var local = bindingOptional {
print("local = \(local)")
} else {
print("值为空")
}
// switch - case
// 1.switch 中, 功能更强大
// 2.默认没有贯穿, fallthrough关键词为贯穿下面的内容, 就是在得到要的值后面还会输出下面的内容
var switchNumber = 5
// case 一定包含所有的情况, 如果情况不能都写完, 就用 default 代替
switch switchNumber {
case 0,1,2,3,4:
print("小于5")
fallthrough
case 6...100:
print("大于5小于100")
fallthrough
case 5:
print("5")
fallthrough
default:
print("others")
}
// 高级用法(面试)
// switch - case 值绑定
// 把一个作为判断条件, 一个作为局部变量接受值
// 利用系统的推断
var (x,y) = (10, 0)
switch (x,y) {
case (var xValue, 0):
print("xValue = \(xValue)")
case (0,var yValue):
print("yValue = \(yValue)")
default:
print("位于坐标系内")
}
// 循环
for var i = 0; i < 10; i++ {
print("i = \(i)")
}
// for - in循环
for i in 1...10 {
print("i = \(i)")
}
// while 循环
var whileNumber = 0
while whileNumber < 10 {
print("whileNumber = \(whileNumber)")
whileNumber++
}
// repeat - while 循环
// 先执行, 后判断
repeat {
print("我能行")
} while false
// 标签语句
// 应用场景: 循环嵌套
// 准确的取消哪一个循环, 想取消哪一个循环, 就该哪一个循环取个标签
joner: while true {
for var i = 0; i < 50; i++ {
print("i == \(i)")
if i == 5 {
break joner
}
}
}
// 枚举
// 还是值类型
enum Person {
case Shaoqiong
case Xiaoze
case Bowen
}
print(Person.Bowen.hashValue)
// ***开发中
// 原始值
// 指定枚举值的类型 Int
enum Fruit:Int {
case Apple
case Banana
case Orange
}
// 原始值, rawValue 就是原始值
print(Fruit.Orange.rawValue)
// 函数, 是一个引用类型
// 函数其实就是OC当中的方法
// 定义函数使用 func
// 1.没返回值, 没参数
// 注意:()里卖写的是参数列表, ->代表返回值
// 函数的类型包括参数类型和返回值类型
// eg.()->Void 整体是一个类型
// 书写时:->Void 可以省
func printStr()->Void {
print("hello world")
}
// 函数调用
printStr()
// 2.没返回值, 有参数
// (String)->Void为函数类型
func printPersonName(name:String) {
print("name = \(name)")
}
// 调用
printPersonName("gangyun")
// *常量
var jonerFunc :(String)->Void = printPersonName
// 调用 jonerFunc
jonerFunc("qiong")
// *多个参数
func printPersonInfo(name:String,age:Int) {
print("name = \(name), age = \(age)")
}
printPersonInfo("joner", age: 23)
// 3.有返回值, 无参数
// 4.有返回值, 有参数
// 函数类型 (String)->String
func returnPersonName(name:String) ->String {
return name
}
var returnName = returnPersonName("joner")
print("returnName = \(returnName)")
// 多个参数多个返回值, 借助元祖
// (String,Int,Float)->(String,Int,Float)为函数类型
func returnPersonInfo(name:String,age:Int, height:Float) ->(String,Int,Float) {
return (name,age, height)
}
// 接受:
var (name,shaoqiongAge,height) = returnPersonInfo("shaoqiong", age: 19, height: 160.0)
print("name = \(name),shaoqiongAge = \(shaoqiongAge),height = \(height)")
// *使用函数的注意事项
// 1.参数在默认情况下是 let 类型, 是不能改变的,想改变的话,参数必须使用 var 修饰
func changeBottleHeight(var height:Float) {
// 高度的改变
height += 49
}
// 2.
// 封装交换两个值得函数, 想改变-用地址(加&, 关键字- inout), 因为其为值传递
//当想要函数的交换, 影响外部值的时候, 变量的关键字-形参的关键字用 inout(输入输出关键字)
func swapTwoNumber( inout a:Int, inout b:Int) {
// let tmp:Int = a;
var tmp:Int = 0
tmp = a
a = b
b = tmp
}
var aa = 49,bb = 94
swapTwoNumber(&aa, b: &bb)
print("aa = \(aa),bb = \(bb)")
swift 高级用法
最新推荐文章于 2024-04-19 12:07:10 发布