今天我们要讲的就是函数【对于函数,在最后面还有几道题,喜欢的博友可以看了自己做一下,和我交流一下】

当然这与我们的c语言还是有一定的共同之处的,对于有一些c语言或者是java基础的童鞋,我觉得是很容易的。

定义函数的语法为:【注意一些书写格式】

    func 函数名(参数1: 类型1,参数2:类型2)-> 返回类型{代码块}

在本节课我们将涉猎到函数的参数为函数返回值为函数等情况

第二课时:

 //: Playground - noun: a place where people can play

 import UIKit
//基本的函数
func first() {
print("first")
}
first() func first2() -> String {
return "abc"
}
first2()
let r = first2()
r
let _ = first2() //下划线忽略不管 func first3(a:Int) ->Int {
print(a)
return
}
first3(a: )
//first3(3) //不能省略a //subString(startIndex:1,length:3)
//func add(firstNumber: Int ,addWithSecond: Int) -> Int {
// return firstNumber + addWithSecond
//}
//add(firstNumber: 3, addWithSecond: 4)
//add(addWithSecond: 6, firstNumber: 5 )//不能改变顺序
//参数忽略的问题
//func add(_ firstNumber: Int ,addWithSecond: Int) -> Int {
// return firstNumber + addWithSecond
//}
//add(5, addWithSecond: 6) //func add(_ firstNumber: Int ,_ addWithSecond: Int) -> Int {
// return firstNumber + addWithSecond
//}
//add(50, 6) //a,和b成为外部参数,argument label(参数标签)
//a和b不能在函数体内使用,只能调用时使用
//func add(a firstNumber: Int ,b addWithSecond: Int) -> Int {
// return firstNumber + addWithSecond
//}
//add(a:5, b: 6) /************ 可变长度,默认值 */ //code snippet //参数可变长度
//func add(numbers: Int...) -> Int {
// var total = 0
// for item in numbers {
// total += item
// }
// return total
//}
//add(numbers: 1,2,3) //参数有默认值 //func add(num1: Int = 2,num2: Int = 3) ->Int{
// return num1 + num2
//} //add(num1: 5)
//add(num1: 2, num2: 5)
//
//add()
//add(num1: 5, num2: 6)
//add(num2: 3)
//add(num2: 5, num1: 6) //不能改变顺序 //func add(num1: Int = 2,num2: Int = 3,num3: Int) ->Int{
// return num1 + num2 + num3
//}
//add(num3: 5)
//add(num1: 1, num2: 2, num3: 3)
//add(num1: 4, num3: 6) /******* 函数类型
在swift中,函数是第一等的公民,意味着与类同级别
*/
let f: (Int,Int)->Int
func test1(a: Int,b: Int) -> Int {
return
}
f = test1
f(, ) let f2: ()-> Void
func test2(){ }
f2 = test2
f2() func outer(inner:(Int)->Void) {
inner()
}
func test3(a: Int) {
print(a)
}
outer(inner: test3) func demo(doFilter:(Int)-> Bool ) ->[Int]{
let arr = [,,,,,,]
var result :[Int] = []
for item in arr {
if doFilter(item){
result.append(item)
} }
return result
} func guolv1(a: Int) -> Bool {
if a > {
return true
}
return false
} func guolv2(a: Int) -> Bool {
if a % == {
return true
}
return false
} let rr = demo(doFilter: guolv2)
rr func each(handler: (Int,Int)->Void) {
let arr = [,,,,,,] for i in ..<arr.count {
handler(i,arr[i])
}
} func myHandler(index: Int,value: Int) {
print("index is \(index) value is \(value)")
} each(handler: myHandler) func aaa() -> Void {
print("this fun is called outer")
} func outer2() -> ()->Void { return aaa
} func outer3() -> ()->Void {
func bbb() -> Void {
print("this fun is called outer")
}
return bbb
}
let recFun = outer2()
recFun() outer3()() func outer4(f:()->Void) -> (Int,Int)->(Int,Int) { f();
func temp(a: Int,b: Int)-> (Int,Int) { return(a + b,a * b)
}
return temp
}
func forOuter4() {
print("for outer4")
}
let outer4Result = outer4 (f:forOuter4)
let outer4ResultResult = outer4Result(,)
outer4ResultResult.
outer4ResultResult. /*作业
1.写一个函数,有一个参数参数,表示的意思是记录的总条数
,第二个参数,表示每页显示的记录数量,默认值为2
函数返回的结果就是一个Int的数组,表示页码
generatePages(records: Int,pageSize: Int = 2){ }
generatePages(7) -> [1,2,3,4] 2。找出swift语言的类似Math.Ceiling的函数出来 3.设计一个函数,在其基础上,生成一系列的超链接字符串数组
["a.aspx?pageno = 1",
"a.aspx?pageno = 2
"a.aspx?pageno = 3
] */

IOS系列之二就到这里结束了,其实函数的知识还有很多,就不在这里一一解剖了.

IOS系列swift语言之课时二的更多相关文章

  1. IOS系列swift语言之课时八

    这节课需要讲的就是可选链,内存管理,引用计数,unowned解决 //: Playground - noun: a place where people can play import UIKit / ...

  2. IOS系列swift语言之课时三

    今天需要掌握的内容就是:闭包.类.结构体.属性(计算属性和延迟属性) 同样里面有一些题目,有兴趣的可以做一下. 首先我们需要知道什么是闭包?所谓的闭包就是一个代码块(一般是指函数以及被它捕获的成员变量 ...

  3. IOS系列swift语言之课时七

    这下需要掌握的就是类型转换,类的构造器,判断类型,异常,异常的处理,defer,范型,约束加速刷代码 import Foundation /* 类型转换 1.利用类的构造器进行转换 2.系统可能提供一 ...

  4. IOS系列swift语言之课时六

    这节课需要讲的就是协议,方法,委托模式(依赖倒转) 代码刷起中...... // // main.swift // ExAndProtocol // // Created by David on 23 ...

  5. IOS系列swift语言之课时五

    过了几天没来理博客了,这次我们要讲的有:类,属性,初始化init(),初始化器,构造器等 直接刷代码了....... //: Playground - noun: a place where peop ...

  6. IOS系列swift语言之课时四

    今天我们要讲的主要有:下标.可为空的类型.枚举(特殊的枚举:递归枚举).原生值.关联值 首先来分析一下这个下标,就是说我们可以通过下标找到对应的值或者是改变对应的值. 其次是可为空的类型,我们要牢记所 ...

  7. iOS之Swift语言的学习

    好久都没有来这个熟悉而又陌生的地方啦, 想想已经有两三个月了吧,不过我相信以后还是会经常来的啦,因为忙碌的学习已经过去啦,剩下的就是要好好的总结好好的复习了,好好的熟悉下我们之前学习的知识点,将他们有 ...

  8. 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型

    一  .   常量和变量 Swift语言 对常量和变量的声明进行了明确的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明确. 常量和变量的区别是常量在设置或初始化后 ...

  9. iOS使用Swift语言检查并提示更新

    项目要上线了,产品要求跟安卓一样,一进去有一个提示框提示更新.虽然苹果在 Settings/iTunes Store & App Store 选项中有自动更新这一选项,而且添加版本号等等有被拒 ...

随机推荐

  1. 【转】TCP协议

    TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6.TCP是一 ...

  2. EXT5 时间框控制(开始时间不能大于结束时间)

    1.网上看的大部分代码都是利用vtype : 'dateRange'  EXT的这个属性,但是可能由于环境问题还是怎么样,我就是实现不了想要的效果. 然后研究了一下,在时间框的listeners 监听 ...

  3. iOS Start developing ios apps (OC) pdf

    这是苹果官方最后一次更新的基于OC的iOS开发基础教程, 如果英文的看不懂,还有中文的版本哦. 点击下面的链接 好东西,分享给大家! 如果确实有帮到你,麻烦star一下我的github吧!

  4. 本地xdebug调试搭建 Laravel+homestead+phpstorm

    1.在homestead virtual box安装和配置xdebug 先在终端运行vagrant up 和 vagrant ssh,ssh远程到homestead,然后复制以下代码到一个shell文 ...

  5. java运行时内存模式学习

    学习java运行时内存模式: 各区介绍: 方法区(线程共享):用于存放被虚拟机加载的类的元数据:静态变量,常量,以及编译和的代码(字节码),也称为永久代(所有该类的实例被回收,或者此类classLoa ...

  6. 【签名之坑】Decmail.GetBits()

    decimal类型有GetBits()方法 可以获取到值的int[4]值,进而获取到byte[16]值 在c#里,0m和0.00m获取到的byte[]是不一样的(具体为何不一样,自己百度) 在sql里 ...

  7. BZOJ4455: [Zjoi2016]小星星

    Description 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细 线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这 ...

  8. 为什么我如此热爱这样一个比赛(转自vici)

    为什么我如此的热爱这样一个比赛呢?因为它总能带给我一个目标,让我去努力实现它.因为可以看到胜利的希望,于是不断的去追逐.虽然其中的过程可能是比较艰辛的.   对于天才选手,作为天生的冠军,大概凭借天赋 ...

  9. mathlab之floor,ceil,round,int以及fix函数

    建议自己动手敲敲,网上很多人自己都没搞清楚然后好多错的.毕竟自己亲眼看到结果才有说服力. 以下是我亲眼见到的结果. 1.double floor(double)函数 floor()函数是常用的取整函数 ...

  10. vs2012 打开解决方案崩溃或者点击项目崩溃

    报错: 问题签名:  问题事件名称: CLR20r3 解决方案: 步骤1:开始-->所有程序-->Microsoft Visual Studio 2012-->Visual Stud ...