在Swift中,变量形参只能在函数本身内改变。如果你想让函数改变形参值,并想要在函数调用结束后保持形参值的改变,那你可以把形参定义为 in-out 形参。通过在形参定义的开始添加 inout 关键字来编写 in-out 形参。In-Out 形参有一个传递至函 数的值,由函数修改,并从函数返回来替换原来的值。你只能传递一个变量作为 in-out 形参对应的实参。你不能传递一个常量或者字面量作为实参,因为常量和字面量不能被修改。当你把变量作为实参传递给 in out 形参时,需要在直接在变量前添加 & 符号,以表明它可以被函数修改。
 1 var a = 20
 2 var b = 30
 3
 4 // var代表num1,num2的值可以改变,系统默认为let #代表使用直接使用内部形参数作为外部形参数,使函数使用者更明了函数的作用
 5 func swipTwoNum(var #num1 : Int,var #num2 : Int)
 6 {
 7     var temp  = num1
 8     num1 = num2;
 9     num2 = temp;
10 }
11
12 swipTwoNum(num1: a, num2:b);
13 println("a : \(a)  b : \(b)");//a : 20  b : 30

 1 var a = 20
 2 var b = 30
 3
 4 // inout 只能传递一个变量作为形参对应的实参。不能传递一个常量或者字面量作为实
 5 // 参,因为常量和字面量不能被修改当你把变量作为实参传递给 in out 形参时,需要在直 接在变量前添加 & 符号
 6 // #     代表使用直接使用内部形参数作为外部形参数,使函数使用者更明了函数的作用
 7 func swipTwoNum(inout #num1 : Int,inout #num2 : Int)
 8 {
 9     var temp  = num1
10     num1 = num2;
11     num2 = temp;
12 }
13
14 swipTwoNum(num1: &a, num2:&b);
15 println("a : \(a)  b : \(b)");//a : 30  b : 20

转载于:https://www.cnblogs.com/imhere/p/4252397.html

Swift学习笔记 In-out形参相关推荐

  1. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  2. swift学习笔记《5》- 实用

    title: swift学习笔记<5>- 实用 date: 2016-09-21 21:39:00 categories: 学习笔记 Swift学习 tags: Swift 1.setVa ...

  3. Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

    Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片 设备图片库和照相机是图像的两个重要来源,使用UIKit中提供的图像选择器UIImagePic ...

  4. Swift学习笔记-协议(Protocols)

    1.0 翻译:geek5nan 校对:dabing1022 2.0 翻译:futantan 校对:小铁匠Linus 定稿:shanksyang 本页包含内容: 协议的语法(Protocol Synta ...

  5. Swift学习笔记8--Optional Chaining

    Optional Chaining 自判断链接(Optional Chaining)是一种可以请求和调用属性.方法及子脚本的过程,它的自判断性体现于请求或调用的目标当前可能为空(  nil ).如果自 ...

  6. Swift学习笔记 (四十二) 不透明类型

    具有不透明返回类型的函数或方法会隐藏返回值的类型信息.函数不再提供具体的类型作为返回类型,⽽是根据它支持的协议来 描述返回值.在处理模块和调用代码之间的关系时,隐藏类型信息⾮常有用,因为返回的底层数据 ...

  7. Swift学习笔记 ——(一)

    前言 作为一个前端开发者,经常与javaacript(以下简称:js)打交道.最近想了解一下ios开发,前两天看了一下objective-c(以下简称:oc),相对于js来说还是有很多不同的,但是语言 ...

  8. Swift学习笔记笔记(七) UIKit常用组件的使用

    一.实验目的: 1.掌握Cocoa程序的创建 2.掌握UILabel组件的使用 3.掌握UIButton组件的使用 4.掌握UITextField组件的使用 二.实验原理: 1.Cocoa应用程序框架 ...

  9. swift学习笔记_iOS开发(一)

    swift已经问世n久了,给自己充充电,学习一下苹果的新东西,苹果公司日渐推崇更为简洁明了更为直观快速的程序开发模式,从适配的AutoLayout到Swift语言,苹果一直在鼓励开发者去探索使用新技术 ...

最新文章

  1. 牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...
  2. Monitor CodeForces - 846D ——二维前缀和
  3. 11月27日struts项目练习评审
  4. 超链接禁用_在Microsoft Word 2003和2007中禁用自动超链接
  5. Kubernetes:通过自动化节省IT预算的4种方法
  6. cfF. Boring Queries
  7. 引入mui后,radio单选框不可点击问题解决
  8. MyBatis_Generator的使用(实践)
  9. mysqldump对mysql数据库的影响
  10. Java编程中“为了性能”尽量要做的26点
  11. Fuschia 是什么样的一个操作系统
  12. centos 修改root密码_Vultr 修改 Root 密码的方法
  13. 32f4怎样同时采集两个adc_硬件-TI-ADC
  14. 3万字细说数据仓库体系(建议收藏)
  15. XR872 移植 u-boot-v2021.07
  16. 【数据库】关系数据库标准sql语言
  17. 国家信息系统安全等级保护基本要求——等保一级、二级、三级、四级内容
  18. Mysql 正则 实现 like in 效果
  19. 如何快速计算汉字笔画数
  20. 国米w ndows错误,争议缠身的超级巨星,23岁爽约尤文,28岁激怒巴萨,35岁逼宫国米...

热门文章

  1. [Java]toString的用法
  2. java spring 加载bean,Spring多种加载Bean方式解析
  3. 基于LSTM搭建文本情感分类的深度学习模型:准确率95%
  4. oracle cloud认证费用,ORACLE Cloud 创建实例费用提问
  5. dom4j实现为list添加父节点_最大堆的实现与原理
  6. 均匀三次b样条曲线_西门子数控曲线加工进给速度优化指令
  7. RHCSA学习笔记-基础操作命令
  8. 敏捷方法开发总结的点评记录
  9. android webview的一些设置问题
  10. [转载]Qt之鼠标样式