函数  懂编程语言的来说这个是最主要的了,不论什么语言都有函数这个概念。函数就是完毕特定任务的独立代码块。

函数怎么创建:

1、创建一个无參无返回值的函数(实际上全部的函数都有返回值,这个函数返回void,它是一个空元组)

func testFunc(){

}

2、创建一个带返回值的函数

func testFunc() -> String{
return "hello"
}

3、创建一个带參数和返回值的函数

func testFunc(name: String) -> String{
return "hello"+name
}

4、创建一个带多个參数和多个返回值的函数

func testFunc(name: String,age: Int) -> (myName:String,myAge:Int){
return (name,age)
}

5、创建带參数名称的函数

func testFunc(myName name: String,myAge age: Int) -> (myName:String,myAge:Int){
return (name,age)
}

ps:调用

testFunc(myName:"小王",
myAge:18)

6、第5中的第二种写法,就是外部參数名和局部变量名是一样的时候。

func testFunc(#name: String,#age: Int) -> (myName:String,myAge:Int){
return (name,age)
} testFunc(name: "小王", age: 18)

7、创建带默认值參数的函数

func testFunc(#name: String,age: Int = 10) -> (myName:String,myAge:Int){
return (name,age)
} testFunc(name: "小王", age: 18)

ps:带默认值的參数要么不指定外部參数名(swift会自己默认指定一个就相当于带了#号了)要么必须指定,不能用#号

8、创建可变參数的函数

func allNums(nums: Double...) -> Double{
var totalNum: Double = 0
for num in nums{
totalNum += num
}
return totalNum
} allNums(1,2,3)

9、函数參数是常量。不能改动的喔

比如:

func error(a: Int){
a = 2 这就会出现一个错误:Cannot assign to 'let' value 'a'
}

那能够创建能够改动的么。当然能够。添加varkeyword就可以。

func error(var a: Int){
a = 2
} error(3)

10、函数參数是值传递的,那有啥办法让它变成引用传递呢,也就是让參数经过了函数的改动,函数外值发生改变了

func yy(inout a:Int,inout b: Int) {
var c = a
a = b
b = a
}
yy(&10, &20)

可是,这样是错误的,哪里错了呢。

就是函数调用的时候,传入的时字面量,这怎么改。

所以要传入变量

var a = 10,b=20
yy(&a, &b)

11、头脑大风暴:函数竟然有类型。它还可以作为參数、类型。

比如:

func yy(inout a:Int,inout b:Int)

这个函数。它的类型是 (Int,Int)-> ()  .

它能够和int double这样的用哦。

----  太强大了 - 怎么强大呢。事实上也就是给函数换了一个名称而已。比如前面的YY方法。还能够这样写:

func yy(a:Int,b: Int) {
var c = a
} var testTT : (Int,Int) -> () = yy;

注意的是。这不支持參数 inout。。。

12、函数嵌套

func yy(a:Int,b: Int) {
func add(a:Int,b:Int) -> Int{
return a + b
}
var test = add(a, b) - a
}

在函数里面定义函数,在函数里面调用函数,能够尝试一下在yy函数外面调用add函数,看看是什么效果。

。。

【Swift】学习笔记(六)——函数的更多相关文章

  1. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  2. Swift学习笔记六

    集合类型(Collection Type) Swift提供三种主要的集合类型:数组(array).集合(set).字典(dictionary).数组是有序的值序列,集合是无序的值序列,字典是无序的键值 ...

  3. swift学习笔记(六)析关闭过程和使用分配给属性的默认值

    一.通过关闭和功能的默认实现财产值 当存储属性默认值需要定制,能为客户提供通过关闭或全局函数的自定义默认值. 注意:全局函数的结构,和枚举使用keywordstatic大喊    用classkeyw ...

  4. Swift学习笔记(8)--函数

    1.定义及调用 func sayHelloAgain(personName: String) -> String { return "Hello again, " + per ...

  5. swift学习笔记之-函数

    //函数 import UIKit /*获得系统时间 var date = NSDate() var timeFormatter = NSDateFormatter() timeFormatter.d ...

  6. STL学习笔记(六) 函数对象

    条款38:遵循按值传递的原则来设计仿函数 仿函数都是 pass-by-value Function for_each(InputIterator first, InputIterator last, ...

  7. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  8. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

随机推荐

  1. BPM中字段查重,C#Ajac调用示例

    BPM中字段查重记录: 这也算是一个C#调用Ajax的示例吧,如果是异步加载的话async: false去掉就可以了. 需求:比如现在要录入一些信息,但是,有一个字段不能重复,BPM表都是自己生成的, ...

  2. 本地文件SVN和 vs svn 插件的使用!!

    比如:客服端是用的TortoiseSVN-1.7.7.22907-x64-svn-1.7.5.msi 里面svn 版本是1.7.5 vs里的插件 也需要svn 版本是1.7.5 对应的AnkhSvn- ...

  3. SQL server存储过程学习

    由于之前使用 Linq to Sql来操作数据库,对于数据库的存储过程.函数等比较薄弱.乘着自己闲着的时候,就百度自学了一点存储过程,以防以后要用. 基础通俗易懂的存储过程通过 存储过程学习 ,然后自 ...

  4. IOS-UITextField-改变光标颜色

    方法1: [[UITextField appearance] setTintColor:[UIColor blackColor]]; 这种方法将影响所有TextField. 方法2: textFiel ...

  5. lua单链表实现

    List = {} --创建一个节点 function List.new(val) return {pnext = nil, value = val} end --往一个节点后添加一个节点 funct ...

  6. 【MFC】虚拟键代码

    一:首先介绍键盘消息 系统消息: ALT,F1,——F24等,是由系统内部处理的,程序本身就存在,比如F1是帮助键. WM_SYSKEYDOWN WM_SYSKEYUP WM_SYSCHAR 非系统消 ...

  7. Javascript关于JSON集合的几种循环方法

    /** * 根据json数据生成option树形控件 * 如果有children节点则自动生成树形数据 * @param {JSON} data * @param {int} n 节点深度 * @pa ...

  8. 计算机二级考试Access教程

    本教程对编程语言各种要点进行详细的讲解介绍,从基础知识到实用技术功能,内容涵盖了从数组,类等基本概念到多态.模板等高级概念.教程本着实用的原则,每一小节都结合了可以笔试.面试的常见程序实例,以便从第一 ...

  9. 接口测试及Postman工具

    首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口.系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写 ...

  10. Django使用中常见的错误

    Django Mysql SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED   Django 执行makemigrations  的时候报错 ...