swift的函数在swift2中的使用改变了不少

/**
*param: personName 參数
*returns: String为返回值
*/
func sayHello(personName: String) -> String {
return "Hello " + personName;
}
/*swift2中函数的调用必需要使用标签或者别名,没有别名第一个标签不带*/
func add(a: Int, b: Int) -> Int {
return a + b;
}
print(add(1, b:2));
/*假设使用了别名,函数调用的时候必须使用别名*/
func add(num1 a: Int, b: Int) -> Int {
return a + b;
}
print(add(num1: 1, b:2));

返回多个值

/*返回多个值,也就是返回一个元组*/
var nums = [1, 2, 3, 4, 5] func minMax(array: [Int]) -> (min: Int, max: Int) {
var minNum = array[0];
var maxNum = array[0]; for num in array {
if num < minNum {
minNum = num
} else if num > maxNum {
maxNum = num
}
} return (minNum, maxNum);
} print(minMax(nums).max);
print(minMax(nums).min);

返回可选的元组

var nums = [1, 2, 3, 4, 5]

func minMax(array: [Int]) -> (min: Int, max: Int)? {
if array.isEmpty {
return nil;
}
var minNum = array[0];
var maxNum = array[0]; for num in array {
if num < minNum {
minNum = num
} else if num > maxNum {
maxNum = num
}
} return (minNum, maxNum);
} print(minMax(nums)!.max);
print(minMax(nums)!.min);

默认參数

func numFun(num: Int = 22) {
print(num);
}
numFun();//输出22

可变參数

func numAdd(nums: Int...) {
var sum = 0;
for num in nums {
sum += num;
} print(sum);
}
numAdd(1, 2, 3);

不用标签调用函数的情况

func addNum(_ a:Int, _ b: Int) {
a + b;
}
addNum(a, b);

变量參数

函数參数默觉得常量,函数内部不能改变參数的值

要想在函数内部改变參数的值。就要使用变量作为參数

func swapNum(var a:Int, var b: Int) {
var temp = a;
a = b;
b = temp;
}

in-out參数

函数默认是使用拷贝传递函数的

使用in-out修饰參数表示參数是使用指针传递函数

func swapNum(inout a:Int, inout b: Int) {
let temp = a;
a = b;
b = temp;
} var a = 1;
var b = 2; swapNum(&a, b: &b);
print("a is \(a), b is \(b)");

函数类型

func add(a: Int, b: Int) -> Int {
return a + b;
}
print(add( 1, b:2)); /*声明一个变量,后面是函数类型*/
var addNum: (Int, Int) -> Int = add; print(addNum(2, 3));

函数类型作为參数

func result(numFun: (Int, Int) -> Int, a: Int, b: Int) {
print(numFun(a, b));
} result(addNum, a: 6, b: 7);

函数类型作为返回值

/*返回一个函数*/
func chooseFunc() -> (Int) -> Int { }

嵌套函数

func addNum(a: Int, b: Int) {
func printNum() {
print(22);
}
printNum();
print(a + b);
}
var a = 1;
var b = 3;
addNum(a, b:b);

【swift-总结】函数的更多相关文章

  1. Swift(三.函数)

    一.swift中的函数分为以下几类吧 1>无参无返   2>无参有返 3>有参无返  4>有参有返  5>有参多返 二.看下面几个例子吧 1>无参无返 func a ...

  2. Swift 语言函数

    import Foundation // 函数声明于实现 func sayHello(name){ print("Hello \(name)") } // 函数调用 sayHell ...

  3. swift 之 函数

    swift的函数跟脚本语言有很多神似之处. 如果有一天用swift开发服务器 ,很期待哇(一切皆有可能,毕竟人家说要跑在Linux上),

  4. Swift 中函数使用指南

    关于Swift中的各种函数的使用的总结 前言 时间久了,好多东西我们就会慢慢忘记,在这里总结一下Swift中函数的使用原则,把大部分的函数使用技巧用代码示例来做了演示,但是如果想提高,还是要多多思考才 ...

  5. 窥探Swift之函数与闭包的应用实例

    今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小实 ...

  6. 你需要知道的swift必备函数 map

    map这东西在oc中并未用过,但是swift在处理数组的时候显得格外的游刃有余,这归功于map这个函数: map函数  arr.map(<#T##transform: (Int) throws ...

  7. Swift:函数和闭包

    函数 函数是一个完成独立任务的代码块,Swift中的函数不仅可以像C语言中的函数一样有函数的参数和返回值,而且还支持嵌套,并且有函数参数默认值.可变参数等. //定义一个函数,注意参数和返回值,如果没 ...

  8. 窥探 Swift 之 函数与闭包的应用实例

    今天的博客算是比较基础的,还是那句话,基础这东西在什么时候 都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小 ...

  9. Swift学习——A Swift Tour 函数

    Functions and Closures  函数和封闭性(闭包) Functions  函数的使用 Swift中的函数定义和OC中有明显的差别了,使用func定义函数,在括号里定义參数和类型,用 ...

  10. Swift - 自定义函数规则说明

    1,无返回值的函数 1 2 3 func test(name:String){   } 2,返回一个返回值 1 2 3 func test(name:String) -> Bool{     r ...

随机推荐

  1. 统一addEventListener与attachEvent中this指向问题

    1.this指向问题 使用addEventListener注册的事件,事件处理函数中 this指向目标元素: 使用attachEvent注册的事件,事件处理函数中 this指向window对象 要想将 ...

  2. day2--命令总结

    1.mkdir               创建目录  -p递归(用来创建层级目录,底层目录不存在) 2.touch               创建文件 3.ls                  ...

  3. 我的第一个python web开发框架(16)——产品分类管理

    产品分类管理的html页面之前忘记做了,这次附件里补上. 好了先上图 从页面效果图来看,我们需要开发列表获取接口.添加接口.单条记录获取接口.编辑接口和删除接口 对于产品分类列表,我们将使用jqgri ...

  4. [转载] MapReduce工作原理讲解

    转载自http://www.aboutyun.com/thread-6723-1-1.html 有时候我们在用,但是却不知道为什么.就像苹果砸到我们头上,这或许已经是很自然的事情了,但是牛顿却发现了地 ...

  5. 你应该学会的Postman用法

    postman这个神器相信大家都用过,程序员作为非专业的测试人员,非常需要这么一款简单轻量级的restful测试工具,但是不知道你是否知道,postman的强大之处不只是测试一下接口,还有其他非常赞的 ...

  6. java的配置环境简介

    ============================================================================== 学java对很多人来说并不陌生,听的最多的 ...

  7. canvas图表(2) - 折线图

    原文地址:canvas图表(2) - 折线图 话说这天气一冷啊, 就患懒癌, 就不想码代码, 就想着在床上舒舒服服看视频. 那顺便就看blender视频, 学习下3D建模, 如果学会了建3D模型, 那 ...

  8. python数据结构与算法篇:排序

    1.冒泡排序(英语:Bubble Sort) 它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. ...

  9. Kafka设计解析(八)- Exactly Once语义与事务机制原理

    原创文章,首发自作者个人博客,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/transaction/ 写在前面的话 本 ...

  10. 问题(一)---线程池,锁、堆栈和Hashmap相关

    一.线程池: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中 ...