• Swift 中的函数


    学习来自《极客学院:Swift中的函数》

    工具:Xcode6.4 

    直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会

    练习一:

     1 import Foundation
     2 
     3 //函数
     4 /*1.定义函数的语法格式
     5     func 函数名(形参列表) -> 返回值类型 {
     6     //可执行语句组成的函数
     7 }
     8 */
     9 //定义和调用函数
    10 func sayHello(personName: String) -> String{
    11     return "Hello "+personName
    12 }
    13 println(sayHello("HeYang"))
    14 
    15 //2.外部参数名 局部参数名:形参类型
    16 func area(宽  Double,高  height: Double) -> Double
    17 {
    18     return width * height
    19 }
    20 print("面积是:")
    21 println(area(宽: 3.4, 高: 4.3))
    22 //但是这样比较麻烦,所以需要用#号
    23 func area_1(# Double,#height: Double) -> Double
    24 {
    25     return width * height
    26 }
    27 print("改了之后:")
    28 println(area_1( 34.1, height: 9.2))
    29 
    30 //3可变参数:在参数类型后面添加 ... 表示该参数
    31 func sum(numbers: Int...) -> Int{
    32     var total : Int = 0
    33     for num in numbers{
    34         total += num
    35     }
    36     return total
    37 }
    38 println("求和是:(sum(1,2,3,4))")
    39 //要注意的地方:一个函数只能有一个可变参数,而且可变参数只能位于最后
    40 
    41 //4.默认参数
    42 func sayHi(msg: String,name: String = "HeYang"){
    43     println("(name),(msg)")
    44 }
    45 sayHi("你好~")
    46 sayHi("你好~", name: "world")
    47 //不能去掉里面的 name: 也就是带有默认参数的是有外部参数名的,也就是说,默认参数相当于是在外部声明定义的。如果要忽略的话,就在默认参数前面添加下划线:unc sayHi(msg: String,_ name: String = "HeYang")不是_name而是_ name
    48 
    49 //如果有可变参数,也有默认参数,那么可变参数放在最后面,默认参数只能出现在次后面
    50 
    51 //5.常量形参 和 变量形参
    52 func factorial(var number:Int) -> Int{
    53     var result: Int = 1
    54     while number > 1{
    55         result = result*number
    56         number--
    57     }
    58     return result
    59     //变量的形参作用域在函数内部,所以形参怎么变化都是不会影响到外面的变量
    60 }
    61 print("形参")
    62 println(factorial(4))
    63 
    64 //6.In-Out形参
    65 func swap(inout a:Int,inout b:Int){
    66     var temp = a
    67     a = b
    68     b = temp
    69 }
    70 var a = 1
    71 var b = 2
    72 swap(&a, &b)
    73 println("交换之后,a:(a) b:(b)")
    74 /*注意
    75 1.只能传入变量作为实参
    76 2.输入输出参数不能带有默认值
    77 3.如果你用关键字,inout标记了一个参数,这个参数不能用var或者let去标记
    78 */

    运行输出结果是:

    练习二:

     1 import Foundation
     2 
     3 //函数
     4 
     5 //1.多个返回值
     6 func area( Double,height: Double) -> (Double,Double)
     7 {
     8     var b = width
     9     var a = width * height
    10     return (a,b)
    11 }
    12 println(area(2,3))
    13 //2、函数类型
    14 func addTwoInts(a: Int, b: Int) -> Int{
    15     return a + b
    16 }
    17 var function: (Int,Int) ->Int = addTwoInts
    18 println(function(3,4))
    19 //3.函数类型作为参数类型
    20 func outfunc(function_1: (Int,Int) ->Int,m:Int,n:Int){
    21     println("result:(function_1(m, n))")
    22 }
    23 outfunc(addTwoInts ,12,12)
    24 //4函数类型作为返回值类型
    25 func square(a :Int)->Int{
    26     return a*a
    27 }
    28 func cube(a:Int)->Int{
    29     return a*a*a
    30 }
    31 func getMatchFunction(str:String)->(Int)->Int{
    32     switch(str){
    33     case "square":
    34         return square
    35     default:
    36         return cube
    37     }
    38 }
    39 var mathFunc = getMatchFunction("cube")
    40 println(mathFunc(5))
    41 //函数重载
    42 func test(){
    43     println("无参数的test函数")
    44 }
    45 func test(msg:String){
    46     println("重载的test()函数(msg)")
    47 }
    48 func test(msg:String) -> String{
    49     println("重载的test()函数,外部参数为(msg)")
    50     return "test"
    51 }
    52 func test(#msg:String) {
    53     println("重载的test()函数,外部参数为(msg)")
    54 }
    55 test()
    56 var result: Void = test(msg: "何杨")
    57 var result2: String = test("哇哦")
    58 /*局部参数名不能作为区分重载 运行会报错
    59 func test(message:String){
    60     println("")
    61 }
    62 */

    运行的结果:

  • 相关阅读:
    HttpWebRequest、HttpWebResponse简单Demo
    向虚拟机发短信(android SMS 调试)
    双系统时间相关8小时
    电脑开机报警声
    Windows Live Writer 代码插件
    配置Linux防火墙
    配置yum源方法,以及失效时的处理
    xp系统下硬盘安装centos6.5
    Android 四大组件 与 MVC 架构模式
    elasticsearch GIS空间查询问题解决
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4647979.html
Copyright © 2020-2023  润新知