函数

作者: 彼岸的黑色曼陀罗 | 来源:发表于2016-09-01 20:02 被阅读0次

    函数

    • swift里的函数就是OC里的方法
    • 格式:
      • func:关键字,多个参数之间用,分隔,也可以没有参数
      • (->)指向返回值类型
    func 函数名(参数类别) ->返回值类型{
       代码块
       return 返回值
    }
    
    • 函数的基本使用
    • 没有参数没有返回值
    func about ()->Void{
      print("iphone7")
    }
    //调用函数
    about()
    //简便写法
    func about(){
      print("iphone7")
    }
    
    • 有参数没有返回值的函数
    func callPhone(phoneNum: String){
        print("打电话给\(phoneNum)")
        print("打电话给:"+phoneNum)
    }
    callPhone("+ 86 110")
    
    • 没有参数有返回值的函数
    func newMessage() ->String{
      return "吃饭了吗"
    }
    newMessage()
    
    • 有参数有返回值的函数
    func addNums(num1 :Int,num2 :Int)->Int{
       return num1 +num2
    }
    let result = addNums(20,num2:30)
    

    函数的使用注意(了解)

    • 1.内部参数和外部参数
      • 内部参数(内部参数名称)
        • 在函数内部可以看到的标识符就是内部参数名称(num1,num2就是内部参数)
        • 默认情况下,所有的参数都是内部参数
      • 外部参数
        • 在函数外部可以看到的标识符就是外部参数(num1看不见,num2以后的都能看见)
        • 从第二个参数开始都是外部参数,但是第一个参数默认不是外部参数
        • 如果希望第一个参数也是外部参数,那么可以在第一个参数的标识符前,加上第一个参数的外部参数名称
        • 如果希望后面的参数不是外部参数,可以在标识符前加_
        • 如果想要修改外部参数名称,就在外部参数标识符前写上新的名字
    func sum(num1 :Int ,num2: Int)->Int{
       return num1 + num2
    }
    sum(20,num2 :30)
    //把num1变为外部参数
    func sum(num1 num1 :Int ,num2: Int)->Int{
       return num1 + num2
    }
    sum(num1 :20,num2 :30)
    //都不是外部参数
    func sum(num1 :Int , _ num2: Int)->Int{
       return num1 + num2
    }
    sum(20,30)
    
    • 2.默认参数
      • 参数后面写一个等号
      • 等于后面写一个默认的值
    func makeCoffee (coffeeName:String = "雀巢")->String{
       return "制作了一杯爱心\(coffeeName)咖啡"
    }
    let coffee1 = makeCoffee("拿铁")
    makeCoffee("摩卡")
    makeCoffee()
    
    • 3.可变参数
      • nums: Int...
      • nums是一个数组类型
      • 把所有的数组放到数组里了
      • 遍历数组就可以得到想要的结果
    func sum(num1 :Int ,num2 :Int)->Int {
        return num1 +num2
    }
    sum(20,num2:30)
    //把四个、十个数字相加
    //可变参数
    func sum (nums :Int...)->Int{
       var total = 0
       for num in nums{
        total += num
       } 
    }
    sum(20,30,40,50)
    //print()也是可变函数,参数是可变的
    print()
    
    • 4.指针(引用类型)
      • 怎么通过一个函数交换m/n的值
      • 关键字:inout
    var m = 20
    var n = 30
    -->报错:常量是不能修改的
    func changeNum(num1:Int , num2 :Int){
    let temp = num1 
    num1 = num2 
    num2 = temp 
    }
    -->报警告,值传递,本质上不会交换m/n
    func changeNum( var num1:Int , num2 :Int){
    let temp = num1 
    num1 = num2 
    num2 = temp 
    }
    changeNum(m,num2:n)
    -->指针传递:
    func changeNum(inout num1 :Int ,inout num2 :Int){
    let temp = num1 | num1是地址,在等号右边,相当于取值
    num1 = num2 |赋值到num1的地址里,把num1里的值改num2
    num2 = temp |把temp的值赋值到num2的地址里
    }
    change(&m,num2 :&n)
    
    • 5.函数嵌套使用
      • 可以在方法里面写方法
      • 建议不要这样写,代码阅读性差
    func demo(){
      func test(){
      func test1(){
        print("test1")
      }
        print("test")
      }  
    print("demo")
       test() | 先打印demo再打印test
    }
    demo
    

    函数的类型

    • 函数的类型是由函数的参数类型和返回值类型共同组成的

      • 类型(Int ,Int)->Int
      • 把函数作为方法的参数,把函数作为方法的返回值
      • 函数式编程
        • 编程语言:Lisp
        • 比C语言C++出现的都早
        • 天才程序员使用的语言
        • 现代所有语言的高度仅仅达到了这门语言1960+的高度(比如OC的block)
        • 数学
        • Java 3000行 == Lisp 100行
        • 《黑客与画家》
        • 用于人工智能领域
    func sum(num1 :Int ,num2 :Int)->Int{
    return num1 +num2
    }
    func multiply(num1 :Int ,num2:Int)->Int{
    return num1 * num2
    }
    var abc :(Int ,Int)->Int = sum
    abc = multiply
    abc(20,30)
    //函数作为方法的参数,把函数以参数的形式传到另外一个地方
    func printResult(cba :(Int ,Int)->Int){
    print(cba(20,30))
    }
    printResult(sum)
    

    相关文章

      网友评论

          本文标题:函数

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