美文网首页
第二节 流程控制以及参数

第二节 流程控制以及参数

作者: 天明天 | 来源:发表于2021-01-29 16:43 被阅读0次
    1. if else 的注意点:
    • if 后面的条件可以省略 小括号
    • 条件后面的大括号不可以省略
    • if 后面的条件必须是 bool 类型
    1. while 注意点
    • repeat-while 相当于OC中的 do-while循环
    • 不在适用num-- 自增自减运算符,从swift3开始去掉++,--改为num -= 1
      image.png

    3.for 循环

    • 闭区间运算符:a...b,: a <= 取值 <= b(0...3 0<= X <=3)

    • 写法:


      image.png
    • image.png

    注意点:for 循环的取值 i 默认是let常量,如果想他的值可以在前面添加 var字段 for var i in 1...3

    • 如果你的for循环里面用不到 i 则可以写成 for _ in 0...3 {}
    • 半开区间运算符 a..<b,标识:a <= 取值 < b
    1. 区间运算符 运用在数组上
    • 运用
    let names = ["A","B","C",“D”]
    for name in names[0...2] {
    
       print("name = \(name)")
    }
    
    • 单侧区间:让区间朝一个方向尽可能远


      image.png

    names[2...] 数组不会越界,达到最大值,此处代表 从2到3,取值为 ”C",“D”,左侧方向也是同样道理

    • 如果写在数组外面 let range = ...5 代表 从 无穷小 到 5!
      image.png

    可以调用 contains()方法,是否包含某个数。

    1. 区间类型
    • 范围的类型是 区间类型例如:let range = ...5
    • let range1: ClosedRange<Int> = 1...3 闭区间类型
    • let range2:Range<Int> = 1..<3
    • let range3: partialRangeThrough<Int> = ...5
    • 字符、字符串也可使用区间运算符,但是默认不能用在 for-in 中 !
      image.png
    • 带间隔的区间符


      image.png

    注意这里 如果through取值为10 最后也会包含这个值

    6. Switch
    • case 跟 default 后面是不能加{}的

    • switch 后面可以不加 break;

    • image.png
    • 如果想要贯穿Switch 可以加 fallthrough 即可

    • 注意点:必须要保证能处理所有情况,记得后面加上 default: break
      *如果能保证你已经处理的所有类型,default :break 也不是必须要加的:例如枚举类型

      image.png
    • 复合条件 他的条件 可以是字符跟字符串

    7. 区间匹配跟元组匹配
    image.png

    后面的一个代码的意思:

    • 代表 这个点是否在一个正方形里面
    • (_,0)下划线 表示:忽略这个值,只要后一个匹配就可以
    8.值绑定
    image.png

    可以把 x的值赋值给后面case语句的变量

    9. Where
    image.png

    这里 where 是决定 where后面的条件是否能进入{} ,而不是退出循环,相当于 continue

    函数

    1. func pi() -> void {

    } func 函数名(参数)-> 返回值{}

    1. 函数的形参 默认就是 let 常量类型,而且只能是 let常量,不允许在左边写var.
    1. 隐式返回
      返回值 只有一句表达式时,可以不写 return
    image.png
    1. 返回元组,实现多返回值


      image.png
    2. 函数的文档注释 固定格式
      /// 第一行【概述】
      ///
      /// 功能描述
      ///
      /// - Parameter v1:第一个参数
      /// - Parameter v2:第二个参数
      /// - Returns: 返回值描述
      ///
      /// - Note:批注
      ///
      func sum(v1: Int,v2: Int) -> Int { v1 + v2 }

    苹果官方规范文档

    https://swift.org/docunmetation/api-design-guidelines/
    6.参数标签
    func goToWork(at time:String){ } goToWork(at:"8:0:0")

    • 可以使用 _ 省略函数标签
      func (_ v1:Int , _ v2:Int) ->Int {v1+v2}
    • 默认参数


      image.png

    C++ 的默认参数值是从右边开始设计的,不允许隔空设置!


    image.png

    func sum(_ v1:Int , v2:Int) -> Int{v1+v2} 这里下划线的意思是,你在传参的时候 可以忽略V1标签即:sum(20,v2:15).[图片上传失败...(image-cef63a-1611909761520)]

    7.可变参数
    image.png

    可以暂时认为numbers是一个数组

    • 一个函数最多只能有一个可变参数
    • 紧跟在可变参数后面的一个参数 不能省略参数标签,不能加下划线
    8.Print函数
    image.png

    print函数:separator:分隔符,terminator:结束符,你可以传参来 自己添加分隔符跟结束符

    1. 输入输出参数
    • inOut 定义输入输出参数
      func add(_ num: inout Int) { num = 20 } 调用 add(&number) 调用需要加上 & 符号

    • 交换两个数的值 用元组实现


      image.png
    • 可变参数不能是 inout,并且 inout 参数没有默认值,inout的本质是地址传递

    • 汇编: call 后面接着函数地址,lea 指令:地址传递指令

    • inout 只可以传入 可以被多次赋值的变量

    10.函数重载
    • 规则: ** 函数名相同 ** 参数个数不同、参数类型不同、参数标签不同
    • 返回值类型跟函数重载无关
    11. 内敛函数
    • 如果开启了编译器优化(release 模式默认开启优化),编译器会自动将某些函数变成内敛函数
    • 内敛函数可以将函数调用变成函数体代码
    • 函数体比较长不会内敛
    • 递归调用不会内敛
    • 包含动态派发不会内敛
    12 函数类型
    • 由参数类型跟返回值类型一致
    • 函数可以作为:参数,返回值,属性等等
    13
    image.png
    image.png

    补充:@inline 内敛标识

    @inline(never) func test(){

    print("test")
    }

    相关文章

      网友评论

          本文标题:第二节 流程控制以及参数

          本文链接:https://www.haomeiwen.com/subject/ejpvictx.html