您现在的位置是:首页 > 文章详情

16.Swift学习之结构体

日期:2018-10-19点击:483

结构体的介绍

  • 概念介绍
    • 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
    • 结构体是值类型
    • 结构体既可以定义属性又可以定义方法

定义语法

struct 结构体名称 { // 属性和方法 } 
  • 举例
struct Person { var name = "Zhangsan" var age = 10 var sex = "man" func say(){ print("人会说话") } } 
  • 解读
    • 定义了一个名叫 Person的结构体
    • 这个结构体拥有两个存储属性 name、 age和 sex
    • 这个结构体拥有一个方法say

结构体实例

  • 实例化结构体最简单的是在结构体名字后面写上(),任何属性都被初始化为它们的默认值
var p1 = Person() 
  • 所有的结构体都有一个自动生成的成员构造函数来实例化结构体,可以使用它来初始化所有的成员属性
var p2= Person(name: "Lisi", age: 20, sex: "woman") 

访问属性和方法

  • 可以用.来访问一个结构体实例的属性和方法
  • 访问时如果使用了赋值语句就是设置属性
//访问 p2.age //设置 p2.age = 30 
//通过.调用结构体中的属性和方法 p1.name p1.age p1.sex p1.say() 

结构体是值类型

  • 值类型是一种当它被赋值给一个常量或者变量,或者被传递给函数时会被拷贝的类型
  • Swift 中的结构体(包括枚举)是值类型,它在代码传递中总是会被拷贝
//值类型拷贝 var p3 = p2 //此时改变p3并不会改变p2的值 p3.name = "Wangwu" p3.age = 30 p2.age //20 p2.name //Lisi p3.age //30 p3.name //Wangwu 

常用的结构体

  • CGRect
/* Rectangles. */ public struct CGRect { public var origin: CGPoint public var size: CGSize public init() public init(origin: CGPoint, size: CGSize) } 
  • CGSize
/* Sizes. */ public struct CGSize { public var width: CGFloat public var height: CGFloat public init() public init(width: CGFloat, height: CGFloat) } 
  • CGPoint
/* Points. */ public struct CGPoint { public var x: CGFloat public var y: CGFloat public init() public init(x: CGFloat, y: CGFloat) } 

字符串,数组和字典的赋值与拷贝行为

  • Swift 中的 String , Array 和 Dictionary类型是作为结构体来实现的,这意味着String , Array 和 Dictionary在它们被赋值到一个新的常量或者变量,或它们本身被传递到一个函数或方法中的时候,其实是传递了拷贝。

  • OC中的 NSString, NSArray和 NSDictionary,它们是作为类来实现的,所以NSString , NSArray 和 NSDictionary实例总是作为一个引用而不是拷贝来赋值和传递。

原文链接:https://yq.aliyun.com/articles/670809
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章