【Swift】学习笔记(六)——函数
函数 懂编程语言的来说这个是最主要的了,不论什么语言都有函数这个概念。函数就是完毕特定任务的独立代码块。
函数怎么创建:
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】学习笔记(六)——函数的更多相关文章
- swift学习笔记2——函数、闭包
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- Swift学习笔记六
集合类型(Collection Type) Swift提供三种主要的集合类型:数组(array).集合(set).字典(dictionary).数组是有序的值序列,集合是无序的值序列,字典是无序的键值 ...
- swift学习笔记(六)析关闭过程和使用分配给属性的默认值
一.通过关闭和功能的默认实现财产值 当存储属性默认值需要定制,能为客户提供通过关闭或全局函数的自定义默认值. 注意:全局函数的结构,和枚举使用keywordstatic大喊 用classkeyw ...
- Swift学习笔记(8)--函数
1.定义及调用 func sayHelloAgain(personName: String) -> String { return "Hello again, " + per ...
- swift学习笔记之-函数
//函数 import UIKit /*获得系统时间 var date = NSDate() var timeFormatter = NSDateFormatter() timeFormatter.d ...
- STL学习笔记(六) 函数对象
条款38:遵循按值传递的原则来设计仿函数 仿函数都是 pass-by-value Function for_each(InputIterator first, InputIterator last, ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- 【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
随机推荐
- DDos攻击,使用深度学习中 栈式自编码的算法
转自:http://www.airghc.top/2016/11/10/Dection-DDos/ 最近研究了一篇论文,关于检测DDos攻击,使用了深度学习中 栈式自编码的算法,现在简要介绍一下内容论 ...
- Git 工具 - 子模块
子模块 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使 ...
- SQL Server 2005外围应用配置器
在SQL Server Configuration Manager中,重启“SQL Server(SQL2005)”服务.
- Hadoop MapReduce编程 API入门系列之MapReduce多种输入格式(十七)
不多说,直接上代码. 代码 package zhouls.bigdata.myMapReduce.ScoreCount; import java.io.DataInput; import java.i ...
- 完美解决ios10及以上Safari无法禁止缩放的问题
移动端web缩放有两种: 1.双击缩放: 2.双指手势缩放. 在iOS 10以前,iOS和Android都可以通过一行meta标签来禁止页面缩放 <meta content="widt ...
- 用LyX写中文幻灯片
虽然在虚拟机装了texlive以备使用,但是在不动CTeX的情况下,是否能使用LyX写中文幻灯片呢.网上只是寥寥几篇大神们在Linux用LyX的博文. 最近把论文交完写幻灯片,于是也把这个想法尝试了一 ...
- powershell遍历文件夹设置权限,解决文件无法删除的问题。
function set-rights ($path) { $p = Get-Item $path; if ($p.Attributes -eq 'Directory') { foreach ($ch ...
- 【Oracle】修改参数的同时添加注释
当修改参数时添加注释,我们会用到如下语句: alter system set parameter=value comment='description'; --修改参数需要有相应权限的用户去执行. 例 ...
- mysql 锁表查看
information_schema.INNODB_TRX 一般锁表后查询这个表 把相关的事务执行线程kill就可以了,可以分析sql语句执行场景 INNODB_LOCKS PROCES ...
- CentOS LiveCD、LiveDVD、BinDVD、netinstall、minimal版区别在哪里
BinDVD版——就是普通安装版,需安装到计算机硬盘才能用,bin一般都比较大,而且包含大量的常用软件,安装时无需再在线下载(大部分情况). minimal版——这个镜像文件用于安装一个非常基本的 C ...