Swift学习笔记--关于swift中In-Out关键字的理解
2016-09-23 11:21
656 查看
在使用swift语言的函数时发现了这样一个关键字:In-Out(输入输出)参数,它的作用是通过函数修改参数的值。其具体的解释如下:
变量形参只能在函数本身内改变。如果你想让函数改变形参值,并想要在函数调用结束后保持形参值的改变,那你可以把形参定义为in-out形参。
函数定义:
func swapTwoInts(a:inoutInt,b:inoutInt){
let temporary = a
a = b
b = temporary
}
var oneInout =30
var anotherInout =60
swapTwoInts(a: &oneInout, b: &anotherInout)
个人认为其实上述代码就类似于oc中以指针作为参数的函数:
- (void)viewDidLoad {
[super
viewDidLoad];
NSInteger a =
20;
NSInteger b =
30;
[self
swapTwoIntsFirstNum:&a
SecondNum:&b];
}
-(void)swapTwoIntsFirstNum:(NSInteger
*)num1 SecondNum:(NSInteger *)num2{
NSInteger a = *num1;
*num1 = *num2;
*num2 = a;
}
上述两个方法都是对函数的形参值进行改变,并且调用结束后形参的值保持不变。
上述两个方法在调用时都是用&符号表示地址,而区别在于在swapTwoInts函数体内部我们不需要处理指针类型,而是可以直接对参数进行操作这和oc中的方法是有区别的。
变量形参只能在函数本身内改变。如果你想让函数改变形参值,并想要在函数调用结束后保持形参值的改变,那你可以把形参定义为in-out形参。
函数定义:
func swapTwoInts(a:inoutInt,b:inoutInt){
let temporary = a
a = b
b = temporary
}
var oneInout =30
var anotherInout =60
swapTwoInts(a: &oneInout, b: &anotherInout)
个人认为其实上述代码就类似于oc中以指针作为参数的函数:
- (void)viewDidLoad {
[super
viewDidLoad];
NSInteger a =
20;
NSInteger b =
30;
[self
swapTwoIntsFirstNum:&a
SecondNum:&b];
}
-(void)swapTwoIntsFirstNum:(NSInteger
*)num1 SecondNum:(NSInteger *)num2{
NSInteger a = *num1;
*num1 = *num2;
*num2 = a;
}
上述两个方法都是对函数的形参值进行改变,并且调用结束后形参的值保持不变。
上述两个方法在调用时都是用&符号表示地址,而区别在于在swapTwoInts函数体内部我们不需要处理指针类型,而是可以直接对参数进行操作这和oc中的方法是有区别的。
相关文章推荐
- swift学习之关键字inout
- XML学习笔记(一):关于字符编码的理解
- SharePoint【学习笔记】-- 关于Element.xml中Ghostable与GhostableInLibrary属性设置
- Java并发编程学习笔记 深入理解volatile关键字的作用
- swift 关于 toolbar 学习笔记
- 【学习笔记】C#中Ref和Out关键字的区别:
- 关于c#中”ref”和”out”关键字的一些理解
- javaweb学习笔记之关于分层结构的初步理解
- 关于think in java学习笔记的说明
- 学习笔记第一天,关于div+css的理解
- Swift基础学习笔记(关于类)
- Sharepoint学习笔记---关于Element.xml中Ghostable与GhostableInLibrary属性设置
- 关于Egret的学习笔记与理解之一
- 学习C#的一些笔记(关于继承与多态,static关键字)
- 关于linux里pg command 命令的简单理解——学习笔记
- 今日学习笔记 关于S3C2440时钟设置的理解
- Swift学习笔记--关于Swift
- 【Swift】学习笔记(五)——控制语句(if,switch,for-in,for,while,do-while)
- c语言学习笔记之const关键字(理解)
- 前言-关于学习OC还是学习Swift的个人理解