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>
传入一个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
- swift -2 元组,函数
- iOS swift-2 (元组)
- swift 的if语句,switch语句,元组,函数
- swift学习2 元组 tuples
- swift tuples 元组
- swift-元组
- Swift 元组
- [Swift]元组-Tuples
- swift语言-元组
- Swift-元组tuple
- Swift 元组
- swift 元组
- Swift元组
- swift元组
- Swift 元组
- swift 2.0 元组
- Swift - Tuple(元组)
- swift之 元组
- x11vnc 安装与配置(转)
- Unity技巧1
- 项目进度估算难题
- 正则表达式
- STM32使用DMA加串口空闲中断接收数据
- swift -2 元组,函数
- jQuery实现表单验证------equalTo方法
- HDU 4288 Coder
- 图像灰度化的三种方法及matlab,c++,python实现
- Android 应用程序之间内容分享详解(二)
- 修改PyCharm自动生成__author__='david'!
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- PAT(甲级)1011
- 获取系统数据库中图片和视屏资源