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 选项中有自动更新这一选项,而且添加版本号等等有被拒 ...
随机推荐
- Vue - 事件绑定
1.内联方式: A:将事件处理器绑定到一个方法中,以下所有事件都以click事件作为案例 注意:内联方式下事件处理器只能绑定一个方法,要是想要绑定多个方法,依旧还是使用js中的addEventList ...
- 2016多校联合训练4 F - Substring 后缀数组
Description ?? is practicing his program skill, and now he is given a string, he has to calculate th ...
- 面试题:给定数组a,找到最大的j-i, 使a[j]>a[i]
第一种方法: 用两重循环对每对点都试一下,然后取最大值即可,时间复杂度为O(n2) #include <iostream> #include <algorithm> using ...
- 通读SDWebImage③--gif和webP的支持、不同格式图片的处理、方向处理
本文目录 NSData+ImageContentType: 根据NSData获取MIME UIImage+GIF UIImage+WebP UIImage+MultiFormat:根据NSData相应 ...
- php止刷新页面重复提交
利用session来解决,首先新建一个session,并赋值,第一次提交后改变session的值,当第二次再此提交此内容时,如果不是我们的赋值,就不在处理传过来的数据.如:<?php sessi ...
- day3 Linux基础
1.正文处理命令及tar命令 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group >1.txt2) 将用户信 ...
- windows下装多个node版本的方法(gnvm)
安装一个支持windows切换node版本的工具 工作中我们可能需要用到一些工具,但这些工具依赖不同版本的node环境,那我们需要来为的切换node的环境吗, window msi安装的用户需要卸 ...
- java学习中的一些疑惑解答
一.java中的枚举类型: 在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.例如星期一到星期日七个数据元素 ...
- extern用法总结
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用".1. extern修饰变量的声明. 如果文件a.c需要引用b.c中变量 ...
- angularjs服务-service
Service 的特性 ①service都是单例的 ②service由$injector 负责实例化 ③service在整个应用的声明周期中存在,可以用来共享数据 ④在需要使用的地方利用依赖注入ser ...