swift -2 元组,函数
2015-09-23 16:24
381 查看
一、元组
1、元组和数组非常相似,区别在于什么?
·元祖的长度是任意的
·元祖中的数据可以是不同类型的 (当然,这只是大多数人多说法,但是个人并不认同,数组的长度也是可以任意的,数据也可以是不同类型的)
2、1⃣️元组的定义
2⃣️元祖定义的第二个方法
3、元组中的可变元祖和不可变元组(let var)
4、可选值 Optional,在类型后面加上个?
代表它使可选的。可选的意思是可以为空,也可以不为空
但是这样输出的结果是这样的
但是我们在输出的时候又不需要Optional 显示,所以就得给可选值拆包
1⃣️、可选值的拆包 ,
不要在输出的时候显示Optional,我们只需要在输出值的后面加上个感叹号
//可选值的拆包 ,
是因为可选值,内部封装枚举类型的。Optional+(some
)
比如,我们可以这么输出
2⃣️、if
和 let
的组合可以去除Optional
小练习
输出一条问候语,打印出某某,你好
上面用到了可选值的方式,并且用两种方式消除了Optional的显示
二、函数
swift
中的函数的关键字
叫做 func
//func 函数名
(参数) -> 返回值类型{
// 实现部分
//}
函数小练习1
传入一个int型的数组,返回最大值,最小值,求和
输出结果如下:
1、swift
中函数可以嵌套函数
2、函数作为返回值的情况
返回函数的参数列表 ->
返回函数的返回值
输出结果为 17
函数小练习2
实现makeComputerFunc
这个函数,传入一个 +—*/。返回值返回一个函数,调用函数传入两个值,然后返回计算结果
输出结果为 15
3、函数作为参数的情况
//第一层函数,参数为一个数组。和一个比较的函数。返回值是一个bool类型
//比较函数,判断第一层函数传入的数组中是否后大于10的数,如果大于10,返回true,如果小于10,返回false
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>
相关文章推荐
- Swift2的更改
- 【面试必备】Swift 面试题及其答案
- Swift多种实现单例写法
- Pods written in Swift can only be integrated as frameworks
- Swift单例写法(推荐)
- swift开发笔记6 - 在表格单元格中添加按钮
- Swift 最佳实践(未完待续)
- swift 基本数据类型--字符串
- Swift中元组及函数
- swift学习笔记(一)NSUserDefaults存储对象的方法
- swift学习笔记(一)NSUserDefaults存储对象的方法
- swift中的函数的使用,嵌套
- Swift - 动态添加删除TableView的单元格(以及内部元件-日期控件)
- swift 风骚的Guard语法
- Swift - 使用TableView的静态单元格进行页面布局
- 黑马程序员——Swift学习笔记:高级类型
- 黑马程序员——Swift学习笔记:高级类型
- 《从零开始学Swift》学习笔记(Day 16)——字典集合
- Swift 2.0学习笔记(Day 16)——字典集合
- swift 元组