IOS系列swift语言之课时二
今天我们要讲的就是函数【对于函数,在最后面还有几道题,喜欢的博友可以看了自己做一下,和我交流一下】
当然这与我们的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语言之课时二的更多相关文章
- IOS系列swift语言之课时八
这节课需要讲的就是可选链,内存管理,引用计数,unowned解决 //: Playground - noun: a place where people can play import UIKit / ...
- IOS系列swift语言之课时三
今天需要掌握的内容就是:闭包.类.结构体.属性(计算属性和延迟属性) 同样里面有一些题目,有兴趣的可以做一下. 首先我们需要知道什么是闭包?所谓的闭包就是一个代码块(一般是指函数以及被它捕获的成员变量 ...
- IOS系列swift语言之课时七
这下需要掌握的就是类型转换,类的构造器,判断类型,异常,异常的处理,defer,范型,约束加速刷代码 import Foundation /* 类型转换 1.利用类的构造器进行转换 2.系统可能提供一 ...
- IOS系列swift语言之课时六
这节课需要讲的就是协议,方法,委托模式(依赖倒转) 代码刷起中...... // // main.swift // ExAndProtocol // // Created by David on 23 ...
- IOS系列swift语言之课时五
过了几天没来理博客了,这次我们要讲的有:类,属性,初始化init(),初始化器,构造器等 直接刷代码了....... //: Playground - noun: a place where peop ...
- IOS系列swift语言之课时四
今天我们要讲的主要有:下标.可为空的类型.枚举(特殊的枚举:递归枚举).原生值.关联值 首先来分析一下这个下标,就是说我们可以通过下标找到对应的值或者是改变对应的值. 其次是可为空的类型,我们要牢记所 ...
- iOS之Swift语言的学习
好久都没有来这个熟悉而又陌生的地方啦, 想想已经有两三个月了吧,不过我相信以后还是会经常来的啦,因为忙碌的学习已经过去啦,剩下的就是要好好的总结好好的复习了,好好的熟悉下我们之前学习的知识点,将他们有 ...
- 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
一 . 常量和变量 Swift语言 对常量和变量的声明进行了明确的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明确. 常量和变量的区别是常量在设置或初始化后 ...
- iOS使用Swift语言检查并提示更新
项目要上线了,产品要求跟安卓一样,一进去有一个提示框提示更新.虽然苹果在 Settings/iTunes Store & App Store 选项中有自动更新这一选项,而且添加版本号等等有被拒 ...
随机推荐
- my links
如何解決MySQL 開動不到的問題 MySQL start fail 10 BEST JQUERY FILE UPLOAD PLUGINS WITH IMAGE PREVIEWS Spring MVC ...
- javascript Date format(js日期格式化) (转)
方法一:这个很不错,好像是 csdn 的 Meizz 写的: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) ...
- Python开发工具PyCharm个性化设置(图解)
Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...
- Qt for Mac 安装(包括PyQt)
下载Qt: http://qt-project.org/downloads Qt5.2 for Mac:http://download.qt-project.org/official_releases ...
- 配置Spark on YARN集群内存
参考原文:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool 运行文件有几个G大,默 ...
- 1001. A+B Format (20)
原题连接:https://www.patest.cn/contests/pat-a-practise/1001 题目如下: Calculate a + b and output the sum in ...
- backbone入门示例
最近因为有个项目需要用backbone+mui 所以最近入坑backbone. Backbonejs有几个重要的概念,先介绍一下:Model,Collection,View,Router.其中Mod ...
- Java概念性问题
一.变量命名的五个要素 由字母.数字.“_”和“$” 组成 首字母不能为数字 大小写敏感 不能使用Java的保留字和关键字 可以使用中文命名,但是不建议 二.java的基本数据类型 整数类型:byte ...
- ratina 视网膜屏幕解决方案大全
第三方教程 http://www.tuicool.com/articles/JBreIn 知乎 https://www.zhihu.com/question/21653056 强烈推荐!!!最牛逼最专 ...
- nlp
http://blog.sina.com.cn/s/blog_574a437f01019poo.html