swift -2 元组,函数

来源:互联网 发布:aspnet网页源码 编辑:程序博客网 时间:2024/04/30 13:11

一、元组

1、元组和数组非常相似,区别在于什么?

·元祖的长度是任意的

·元祖中的数据可以是不同类型的  (当然,这只是大多数人多说法,但是个人并不认同,数组的长度也是可以任意的,数据也可以是不同类型的)


2、1⃣️元组的定义

var userInfo1 = ("zhanshan","lisi",20)print(userInfo1.0) //读取元祖中的数据let (name, isMale, age) = userInfo1  // 在这里,name = "zhanshan"print(name)

2⃣️元祖定义的第二个方法

var userInfo2 = (name:"list",isMale:"woman",age:22)print(userInfo2.name)//在元祖中,我们可以跳过我们不关心的值,用下划线跳过,这样,我们就访问不到 userInfo1.1 这个数据了let (name , _ , age) = userInfo1

3、元组中的可变元祖和不可变元组(let var)

let yuanzu1 = (name:"aiya",isMale:"woman",age:47)// 不可变元祖是不可以改变它固定的值的print("\n\(yuanzu1)")var yuanzu2 = (name:"list",isMale:"woman",age:22)// 可变元组可以改变里面的值yuanzu2.name = "wocao"print(yuanzu2.name)

4、可选值 Optional,在类型后面加上个?

代表它使可选的。可选的意思是可以为空,也可以不为空

var myVar : AnyObject?myVar = "xiaomei"print(myVar)


但是这样输出的结果是这样的    
Optional(xiaomei)

但是我们在输出的时候又不需要Optional 显示,所以就得给可选值拆包

1⃣️、可选值的拆包 ,不要在输出的时候显示Optional,我们只需要在输出值的后面加上个感叹号

//可选值的拆包 ,是因为可选值,内部封装枚举类型的。Optional+some

比如,我们可以这么输出

<span style="font-size:18px;">print(myVar!)</span>
这样输出的话就没有Optional显示了

2⃣️、if let的组合可以去除Optional

<span style="font-size:18px;">if let name = myVar{    print("\n\(name)")// 在这里\n是换行显示出来的意思,和其他编程语言一样    }</span>

小练习
输出一条问候语,打印出某某,你好

<span style="font-size:14px;">var name : AnyObject?name = "德玛"print("\n\(name!),你好")if let moumou: AnyObject = name{    print("\n\(moumou),你真好")}</span>
上面用到了可选值的方式,并且用两种方式消除了Optional的显示



二、函数

swift中的函数的关键字叫做 func

//func 函数名 (参数) -> 返回值类型{

//    实现部分

//}


<span style="color:#33cc00;">//函数的声明和实现部分</span><span style="color:#333333;">func 问候语(name:String,day:String)->String{    return "hello,\(name),today is \(day)"}</span><span style="color:#33cc00;">//函数的调用</span><span style="color:#333333;">print(问候语("lisa", day: "星期三"))</span>


函数小练习1

传入一个int型的数组,返回最大值,最小值,求和

<span style="color:#333333;">func 计算(var 数组:[Int])->(max:Int , min:Int , sum:Int){    var max = 数组[0]    var min = 数组[0]    var sum = 0        for item in 数组{                if max < item{            max = item        }        if min > item{            min = item        }        sum += item    }    return (max,min,sum)}let 计算结果 = 计算([6743,476,378,354,34])print(计算结果)print("max = \(计算结果.max),min = \(计算结果.min),sum = \(计算结果.sum)")</span>
输出结果如下:

<span style="color:#333333;">(6743, 34, 7985)max = 6743,min = 34,sum = 7985</span>


1、swift 中函数可以嵌套函数

func returnFifteen() ->Int{        var ten = 10    func addFive(){        ten += 5    }        addFive() // 调用一次输出15,自加5    addFive() // 调用2次输出20    addFive() // 调用3次输出25    return ten}print(returnFifteen())

2、函数作为返回值的情况返回函数的参数列表 -> 返回函数的返回值

<span style="color:#009900;">func makeFunc()->(Int->Int){    func addFive(a:Int)->Int{        return a+5    }    return addFive}var func1 = makeFunc()print(func1(12))</span>
输出结果为 17


函数小练习2

实现makeComputerFunc 这个函数,传入一个 +—*/。返回值返回一个函数,调用函数传入两个值,然后返回计算结果

<span style="color:#333333;">func makeComputerFunc(operation:String)->((Int,Int)->Int){    switch operation{        case "+":            func jia(a:Int,b:Int)->Int{                return a+b        }        return jia                case "-":            func jian(a:Int,b:Int)->Int{                return a-b        }        return jian                case "*":        func cheng(a:Int,b:Int)->Int{            return a*b        }        return cheng                case "/":        func chu(a:Int,b:Int)->Int{            return a/b        }        return chu                default:        func ni(a:Int,b:Int)->Int{            return 0        }        return ni    }    }var 结果 = makeComputerFunc("+")print(结果(5,10))</span>
输出结果为 15


3、函数作为参数的情况

//第一层函数,参数为一个数组。和一个比较的函数。返回值是一个bool类型

//比较函数,判断第一层函数传入的数组中是否后大于10的数,如果大于10,返回true,如果小于10,返回false

<span style="color:#666666;">func hasAnyMatches(numbers:[Int],condition:(Int)->Bool)->Bool{        for num in numbers{        if condition(num){            return true        }    }    return false}func moreThanTen (num:Int)->Bool{    if num > 10{        return true    }else{        return false    }}print(hasAnyMatches([2,5,2,3,4,2,12,4], condition: moreThanTen))</span>








0 0
原创粉丝点击