- 畅销套餐
- 精选套餐
- 人气套餐
- 尊享套餐
- 高薪套餐
- 课程介绍
- 课程大纲
适合人群:
iOS初学者,iOS入门,对iOS开发感兴趣
你将会学到:
学习Swift语言技巧并进行实战开发
课程简介:
课程内容:
Swift语言视频教程入门与提高
课程大纲-Swift语言视频教程入门与提高(下)视频课程
第1章Swift中的函数(11小时44分钟24节)
1-2
1使用函数函数语法:func 函数名(参数列表) -> 返回值类型 { 语句组 return 返回值} 需要了解的问题:1、关于单值和多值返回。2、关于无法返回值情况。函数定义示例代码如下:func rectangleArea(width:Double, height:Double) -> Double { let area = width * height return area }println("320x480的长方形的面积:\(rectangleArea(320, 480))")
[07:16]开始学习1-4
2.1使用外部参数名func rectangleArea(width:Double, height:Double) -> Double { let area = width * height return area}println("320x480的长方形的面积:\(rectangleArea(320, 480))")1、有什么问题吗?func rectangleArea(W width:Double, H height:Double) -> Double { let area = width * height return area}println("320x480的长方形的面积:\(rectangleArea(W:320, H:480))")width和height局部(内部)参数名。W和H外部参数名。2、把局部参数名作为外部参数名使用func rectangleArea(#width:Double, #height:Double) -> Double { let area = width * height return area}println("320x480的长方形的面积:\(rectangleArea(width:320, height:480))")
[07:50]开始学习1-5
2.2参数默认值我们在定义函数的时候可以为参数设置一个默认值,当调用函数的时候可以忽略该参数。看下面的一个示例:func makecoffee(type : String = "卡布奇诺") -> String { return "制作一杯\(type)咖啡。"}let coffee1 = makecoffee(type: "拿铁") let coffee2 = makecoffee() 输出如下:制作一杯拿铁咖啡。制作一杯卡布奇诺咖啡。当有默认值的参数时候,调用时候需要指定参数名(可以是外部或内部的)我们可以使用下划线作为外部参数名,这样我们调用时候就可以省略参数名了。(只能是有默认值的参数)使用下划线(_)指定外部参数名:func CircleArea(R radius: Double = 30, _ pi: Double = 3.14) -> Double { let area = radius * radius * pi return area}println("圆面积:\(CircleArea(R : 50, 3.1415926))")
[09:58]开始学习1-6
2.3可变参数Swift中函数的参数个数可以变化,它可以接受不确定数量的输入类型参数,它们具有相同的类型,有点像是传递一个数组。我们可以通过在参数类型名后面加入(...)的方式来指示这是可变参数。下面看一个示例:func sum(numbers: Double...) -> Double { var total: Double = 0 for number in numbers { total += number } return total}下面是两次调用sum函数代码:sum(100.0, 20, 30)sum(30, 80)
[04:31]开始学习1-7
2.4参数的传递引用参数传递方式有两种:值类型和引用类型。只有类是引用类型,其他的数据类型如整型、浮点型、布尔型、字符串、元组、集合、枚举和结构体全部是值类型。示例:class PassTest { var ptValue = 0}func changeObjValue(ref : PassTest ){ ref.ptValue = 99}var pt = PassTest()println(pt.ptValue)changeObjValue(pt)println(pt.ptValue)func changeInt(var value : Int){ value = 55}var val = 11println(val)changeInt(val)println(val)如果一定要将一个值类型参数作为引用传递,也是可以实现的,Swift提供的inout关键字就可以实现。下面的一个示例:func changeInt(inout value : Int){ value = 55}var val = 11println(val)changeInt(&val)println(val)
「仅限付费用户」点击下载“9.函数.pdf”
[10:43]开始学习1-8
3.1无返回值函数func 函数名(参数列表) { 语句组}func 函数名(参数列表) ->() { 语句组}func 函数名(参数列表) ->Void { 语句组}示例:func increment(inout value:Double, amount:Double = 1.0) { value += amount}func increment(inout value:Double, amount:Double = 1.0) ->() { value += amount}func increment(inout value:Double, amount:Double = 1.0) ->Void { value += amount}
[04:44]开始学习1-9
3.2多返回值函数两种方式实现:参数声明为引用类型传递将返回定义为元组类型。1.引用类型传递示例:func changeInt(inout value1 : Int, inout value2 : Double){ value1 = 55 value2 = 1.23}var val1 = 0var val2 = 0.0changeInt(&val1, &val2)println(val1)println(val2)2. 元组类型示例:func changeInt() -> (value1: Int, value2 : Double) { return (55, 1.23)}let value = changeInt()println(value.0)println(value.1)
[09:06]开始学习1-14
6.嵌套函数我们也可以把函数定义在另外的函数体中,称作嵌套函数。示例:func calculate(opr :String)-> (Int,Int)-> Int { //定义+函数 func add(a:Int, b:Int) -> Int { return a + b } //定义-函数 func sub(a:Int, b:Int) -> Int { return a - b } var result : (Int,Int)-> Int switch (opr) { case "+" : result = add case "-" : result = sub default: result = add } return result;}let f1:(Int,Int)-> Int = calculate("+")println("10 + 5 = \(f1(10,5))")let f2:(Int,Int)-> Int = calculate("-")println("10 + 5 = \(f2(10,5))")
[04:10]开始学习1-16
7.1一个问题的思考自定义日志函数。String类型func log4String(msg : String) { println(msg)}Int类型func log4Int(msg : Int) { println(msg)}Double类型func log4Double(msg : Double) { println(msg)}可以合并为一个函数吗?
[03:18]开始学习1-17
7.2泛型函数在函数名log4后面添加<T>,参数的类型也被声明为T,T称为占位符,函数在每次调用时传入实际类型才能决定T所代表的类型。示例如下:func log4<T>(msg : T) { println(msg)}log4(3)log4("tony")log4(1.02)如果有多个不同类型,可以使用其他大写字母,一般情况下我们习惯于使用U字母,但是你也可以使用其他的字母。多个占位符用逗号“,”分隔。示例如下:func isEquals<T, U>(a: T, b: U) -> Bool {...}占位符不仅仅可以替代参数类型,还可以替代返回值类型。示例代码如下:func isEquals<T>(a: T, b: T) -> T {...}
[10:19]开始学习1-18
7.3.泛型约束有些占位符必须遵守某种协议,及T占位符后面添加冒号和协议类型,这种表示方式被称为泛型约束,它能够替换T的类型。例如一个比较函数如下:func isEquals<T>(a: T, b: T) -> Bool { return (a == b)}上面的函数在编译时会有错误发生,这是因为并不是所有的类型都具有“可比性”,T表示的类型必须遵守Comparable协议实现类型。Comparable协议表示可比较的,修改代码如下:func isEquals<T: Comparable>(a: T, b: T) -> Bool { return (a == b)}let n1 = 200let n2 = 100println(isEquals(n1, n2))let s1 = "ABC1"let s2 = "ABC1"println(isEquals(s1, s2))
[07:05]开始学习
“关东升”老师的其他课程更多+