Swift入门(七)——结构体(Struct)
来源:互联网 发布:免费书籍阅读软件 编辑:程序博客网 时间:2024/06/08 07:26
引子
之前我们在用Int,String等类型的时候,可能没有仔细研究过,其实这些基本类型与C或者Java不一样,不是严格的“基本类型”,他们其实是经过封装的结构体。
按住Alt键点击Int类型后,可以看到Int结构体的完整定义
/// A 64-bit signed integer value/// type.struct Int : SignedIntegerType { var value: Builtin.Int64 /// A type that can represent the number of steps between pairs of /// values. typealias Distance = Int /// Create an instance initialized to zero. init() init(_ v: Builtin.Word) /// Create an instance initialized to `value`. init(_ value: Int) ///以下代码省略}
可以看到,结构体中的成员变量存储了Int类型的值,同时还提供了包括初始化方法之内的若干个方法。
Swift中的结构体并不复杂,与C语言的结构体相比,除了成员变量,还多了成员方法。使得它更加接近于一个类。个人认为这算是类的一个轻量化实现。下面我通过自己实现一个结构体来加深对其的理解。
定义结构体
struct Person { var name:String var age:Int func introduce(){ println("我叫:\(name),今年\(age)岁") }}
语法与C语言或者OC类似,函数会在之后介绍。不过需要注意的是,Swift中的结构体,在定义成员变量时一定要注明类型。
结构体的使用
定义完结构体之后就可以创建一个Person结构体类型的变量了。
var person = Person(unknown: "kt",age: 20)
这里的Person(name:age:)方法是结构体根据其成员变量默认生成的构造方法。当然我们也可以自定义它的构造方法。
创建结构体变量后,就可以访问或修改结构体的成员变量或调用在结构体里面定义的成员方法。
person.name = "kt"println("person.name = \(person.name)")person.introduce()
运行结果:
person.name = kt我叫:kt,今年20岁
另外要注意一下的是,结构体属于值类型,而Swift中的类属于引用类型。他们在内存管理方面会有不同。
附录
查看完整专栏——《Swift轻松入门》
【Swift入门(一)——基本语法】
【Swift入门(二)——字符与字符串】
【Swift入门(三)——元组(Tuple)】
【Swift入门(四)——可选类型(Optionals)与断言(Assert)】
【Swift入门(五)——数组(Array)】
【Swift入门(六)——字典(Dictionary)】
【Swift入门(七)——结构体(Struct)】
【Swift入门(八)——功能强大的求余运算符】
【Swift入门(九)——String与Int、Double、Float等数字相互转换】
【Swift入门(十)——循环引用、弱引用和无主引用】
【Swift入门(十一)——类型转换与is、as操作】
【Swift入门(十二)——利用Extension添加逆序输出字符串方法】
- Swift入门(七)——结构体(Struct)
- Swift Struct结构体
- Swift-类和结构体(class&struct)
- Swift 中的结构体 (Struct)
- Go编程基础—结构(struct)
- swift:类class是浅拷贝 结构体struct是深拷贝(代码理解)
- 新型结构体---Swift之Struct
- Swift语言精要 - 浅谈结构体(Struct)
- Swift学习——Swift基础详解(七)
- C# 结构体—struct
- 结构struct(2)
- C# 结构(Struct)
- Swift编程语言入门视频教程(七)--switch分支语句
- swift UITableView(七)
- Swift 笔记(七)
- C Abstract——Struct 结构体
- Linux串口—struct termios结构体
- Linux串口—struct termios结构体
- volley学习笔记(四):Android利用Volley异步加载数据(JSON和图片)完整示例
- 原码、反码、补码
- java学习笔记:利用TreeSet排序时Comparator接口和Comparable接口
- muduo::EventLoop分析
- 关于AR学院
- Swift入门(七)——结构体(Struct)
- hdu-4348-To the moon-主席树在线区间更新
- 应用限流接入手册
- 微信HTML5页面设计建议
- 问题:浮动影响<a>标签点击?
- 如此抄袭Apps之OscHub(二)
- 没有onFling,找不到onFling()
- 外网访问自己的tomcat
- Java心得5