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

当然这与我们的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. Vue - 在v-repeat中使用计算属性

    1.从后端获取JSON数据集合后,对单条数据应用计算属性,在Vue.js 0.12版本之前可以在v-repeat所在元素上使用v-component指令 在Vue.js 0.12版本之后使用自定义元素 ...

  2. dedecms为文档页增加动态点击

    加上 <script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field name='id' ...

  3. 2016-2017 ACM-ICPC Asia-Bangkok Regional Contest

    A. WSI Extreme 将人按洗澡时间从大到小排序,那么$ans=\sum_{i=1}^{n}a_i\times\lfloor\frac{i+W-1}{W}\rfloor$. 当$W$比较大时, ...

  4. CF750E New Year and Old Subsequence

    讲道理好久没有做过题了.. 题目大意 给出长度为$n$的只含数字的串,有$q$个询问,每次询问一段区间,问最少删去多少个数才能变成只含2017子序列而不含2016子序列 吉爸爸好强啊.. 定义$a_{ ...

  5. js数组与对象性能比较

    js的数组可以看成特殊的对象,获取指定项的行为跟获取对象中指定key对应项的行为是一致的. 一般都是hash map实现的,因而复杂度是常数级的.

  6. 【总结】C# Access 数据库 增删查改 的简单步骤

        引用集: using System.Data.OleDb; static string exePath = System.Environment.CurrentDirectory;//本程序所 ...

  7. Angular初步

    一.angular.js是什么? angular.js是一个javascript的框架,与jquery是一个级别的,区别是jquery主要是擅长dom操作,而angular主要是擅长绑定数据显示数据. ...

  8. jsp 中 有没有类似java if else语句

    <c:when test=""></c:when> <c:otherwise></c:otherwise> 有if else的功能 ...

  9. 字符串、数组方法实战--charAt(),split(),indexOf(),substring()

    这篇随笔根据两个面试题来实战一下数组.字符串的一些方法. 题一:一个字符串中找出出现次数最多的字符次数 var str = 'fuuhuhuhufaihuhfnkjNKCNIO';
 function ...

  10. centos7安装mysql5.7

    http://jingyan.baidu.com/album/93f9803f010d8fe0e56f555e.html?picindex=15