Swift第四课 函数

使用func 来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值。 


创建一个函数。

func 函数名称 (参数名: 参数类型, 参数名: 参数类型) -> 返回值类型。


//创建一个名为sum的函数,计算firstCount与lastCount 的和,他们的类型都是Int 返回值的类型也为Int

func sum ( firstCount:Int , lastCount:Int) -> Int 

{

firstCount = 20 // 这是错误写法,在函数中,参数变量类型默认为常量类型,不可更改,如果需要修改参数值,则需要在变量前面加上 var,比如 func sum(var firstCount: Int)-> Int

return firstCount + lastCount

}


函数返回元组

//   用一个元组来返回多个值,

    func getPrices() -> (Double,Double, Double)

    {

        return (3.59,3.69,3.79);

    }

    var gasprices = getPrices(); 


  //如果返回的值是String类型,可以直接gasprices.属性名称

    println("\(gasprices.0,gasprices.1,gasprices.2)"

  

函数的参数数量是可变的,可以用一个数组获取参数。

func sum(counts:Int...) -> Int//表示,可以有 1 - n 个参数。

        var sum = 0       

        for counts:Intin numbers {

                        

            sum += number

        }

                

        return sum

   }

 println("\(self.sumOf(1,2,3,4,5,6,6))")//调用sum 并打印。


函数嵌套

//    函数可以嵌套。被嵌套的函数可以访问外侧函数的变量。

    func fifteen() ->Int{

        

            var y = 10 

            

            func add(){

                y+=5

            }

            

            add()//调用嵌套函数

            return y

    }

    println("\(self.fifteen())")


//    函数可以作为另一个函数的返回值。

    func incrementer() -> (Int ->Int){ 

        

        func addOne(number:Int) -> Int{

        

            return 1 + number

        }

        

        returnaddOne //返回一个函数类型值。

    }

   

    //incrementer返回的是一个函数类型。

    var function =self.incrementer()

    println("\(function(23))")


//    函数也可以当做参数传入另一个函数。

//表示声明一个matches函数,第一个参数是一个int类型的数组,第二个参数,是一个函数类型,参数为int类型,返回值为Bool值。

    func matches(list: [Int], condition:Int ->Bool) ->Bool{

                

        for itemin list{

                    

            if condition(item){

        

                returntrue;

            }

        }

                

        returnfalse

    }

    

    func thanTen(number:Int) -> Bool {

        

//        如果number小于10 ,就返回YES 反之返回NO

        return number < 10

    

    }

//传入的函数有多个参数。

    func matches(list: [Int], condition: (Int ,String) ->Bool) ->Bool{ //(Int ,String) 为多个参数的类型

                

        for itemin list{

                    

                if condition(item ,"这是第二个参数"){

        

                returntrue;

            }

        }

                

        returnfalse

    }

    

    func thanTen(number:Int,str:String) ->Bool {

        

         println("\(str)")


//        如果number小于10 ,就返回YES 反之返回NO

        return number < 10

    

    }

    定义一个名为 mathFunction 的变量,该变量是一个函数类型,它接受2个参数一个int 一个String返回一个bool值, 引用名为,thanTen的函数。

    var mathFunction: (Int,String) -> Bool =thanTen 


     //调用matches 方法,第二个参数,可以直接传入函数名称,也可以传入变量mathFunction: (IntString) -> Bool。

    var isflag =self.matches([1,2,3,4,5,6,2,10], condition:thanTen)

      

函数内部修改参数引用值。

func sum (inout sumCount:Int){

           sumCount = 100

 }

  sum(&sumCount) //需要传入,变量地址值。

  println(sumCount) //结果为100



       



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值