zoukankan      html  css  js  c++  java
  • 【Swift】学习笔记(六)——函数

    函数  懂编程语言的来说这个是最主要的了,不论什么语言都有函数这个概念。函数就是完毕特定任务的独立代码块。


    函数怎么创建:

    1、创建一个无參无返回值的函数(实际上全部的函数都有返回值,这个函数返回void,它是一个空元组)

    func testFunc(){
        
    }

    2、创建一个带返回值的函数

    func testFunc() -> String{
        return "hello"
    }

    3、创建一个带參数和返回值的函数

    func testFunc(name: String) -> String{
        return "hello"+name
    }

    4、创建一个带多个參数和多个返回值的函数

    func testFunc(name: String,age: Int) -> (myName:String,myAge:Int){
        return (name,age)
    }

    5、创建带參数名称的函数

    func testFunc(myName name: String,myAge age: Int) -> (myName:String,myAge:Int){
        return (name,age)
    }

    ps:调用 

    testFunc(myName:"小王", myAge:18)


    6、第5中的第二种写法,就是外部參数名和局部变量名是一样的时候。

    func testFunc(#name: String,#age: Int) -> (myName:String,myAge:Int){
        return (name,age)
    }
    
    testFunc(name: "小王", age: 18)

    7、创建带默认值參数的函数

    func testFunc(#name: String,age: Int = 10) -> (myName:String,myAge:Int){
        return (name,age)
    }
    
    testFunc(name: "小王", age: 18)

    ps:带默认值的參数要么不指定外部參数名(swift会自己默认指定一个就相当于带了#号了)要么必须指定,不能用#号


    8、创建可变參数的函数

    func allNums(nums: Double...) -> Double{
        var totalNum: Double = 0
        for num in nums{
            totalNum += num
        }
        return totalNum
    }
    
    allNums(1,2,3)

    9、函数參数是常量。不能改动的喔

    比如:

    func error(a: Int){
        a = 2    这就会出现一个错误:Cannot assign to 'let' value 'a'
    }

    那能够创建能够改动的么。当然能够。添加varkeyword就可以。

    func error(var a: Int){
        a = 2
    }
    
    error(3)


    10、函数參数是值传递的,那有啥办法让它变成引用传递呢,也就是让參数经过了函数的改动,函数外值发生改变了


    func yy(inout a:Int,inout b: Int) {
        var c = a
        a = b
        b = a
    }
    yy(&10, &20)

    可是,这样是错误的,哪里错了呢。

    就是函数调用的时候,传入的时字面量,这怎么改。

    所以要传入变量

    var a = 10,b=20
    yy(&a, &b)


    11、头脑大风暴:函数竟然有类型。它还可以作为參数、类型。

    比如:

    func yy(inout a:Int,inout b:Int)

    这个函数。它的类型是 (Int,Int)-> ()  .

    它能够和int double这样的用哦。

    ----  太强大了 - 怎么强大呢。事实上也就是给函数换了一个名称而已。比如前面的YY方法。还能够这样写:

    func yy(a:Int,b: Int) {
        var c = a
    }
    
    var testTT : (Int,Int) -> () = yy;

    注意的是。这不支持參数 inout。。。


    12、函数嵌套

    func yy(a:Int,b: Int) {
        func add(a:Int,b:Int) -> Int{
            return a + b
        }
        var test = add(a, b) - a
    }

    在函数里面定义函数,在函数里面调用函数,能够尝试一下在yy函数外面调用add函数,看看是什么效果。

    。。








  • 相关阅读:
    你没听过的乔布斯语录:苹果如果没这么独,可能更成功
    关于Apache mod_rewrite的中文配置、使用和语法介绍(实现URL重写和防盗链功能)
    与调试器共舞
    libxml2.dylb 导致<libxml/tree.h> 老是找不到头文件
    国家气象局提供的天气预报接口(完整Json接口)
    dSYM 文件分析工具
    总结
    1-22
    【图论】
    好像要开始图论了....但搜索还剩了点....
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6906896.html
Copyright © 2011-2022 走看看