16.Swift学习之结构体

简介: 结构体的介绍概念介绍结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合结构体是值类型结构体既可以定义属性又可以定义方法定义语法struct 结构体名称 { // 属性和方法}举例stru...

结构体的介绍

  • 概念介绍
    • 结构体(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实例总是作为一个引用而不是拷贝来赋值和传递。

目录
相关文章
|
23天前
|
Swift
Swift 中 struct(结构体)和 class(类)的区别
【10月更文挑战第10天】理解 struct 和 class 的区别对于正确使用 Swift 语言进行编程非常重要。在实际开发中,需要根据具体的需求和场景来选择合适的数据类型,以充分发挥它们的优势,提高代码的质量和效率。
|
13天前
|
Swift iOS开发
Swift 结构体
10月更文挑战第28天
23 0
|
6月前
|
人工智能 物联网 API
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
|
6月前
|
存储 定位技术 Swift
【Swift 开发专栏】Swift 中的枚举与结构体
【4月更文挑战第30天】本文探讨了Swift中的枚举与结构体,包括它们的定义、用法及差异。枚举用于表示有限状态或选项,如游戏状态;结构体适合表示具有特定属性和行为的数据,如商品信息。两者均可定义属性和方法,作为函数参数。枚举以整数存储,不可继承,结构体按属性存储且可继承,更灵活。理解两者特点有助于提升编程效率。
35 0
|
6月前
|
存储 数据处理 Swift
在Swift中,类(class)和结构体(struct)
在Swift中,类(class)和结构体(struct)
67 1
|
Swift
Swift实用小册08:Class类的Struct结构体的使用
Swift实用小册08:Class类的Struct结构体的使用
272 0
Swift实用小册08:Class类的Struct结构体的使用
|
存储 编译器 Swift
Swift5.0 - day3-可选项、结构体、类
Swift5.0 - day3-可选项、结构体、类
147 0
Swift5.0 - day3-可选项、结构体、类
|
存储 编解码 编译器
Swift5.1—类和结构体
Swift5.1—类和结构体
120 0
Swift5.1—类和结构体
|
Swift
(一)swift的基本学习
(一)swift的基本学习
176 0
|
开发工具 Swift iOS开发
Swift学习第二练——Swift项目时光电影
Swift学习第二练——Swift项目时光电影
161 0
Swift学习第二练——Swift项目时光电影