当前位置: 首页 > 知识库问答 >
问题:

swift语言中的结构与类

罗宪
2023-03-14

来自Apple book“结构和类之间最重要的区别之一是,当结构在代码中传递时,它们总是被复制,而类是通过引用传递的。”

有谁能帮我明白那是什么意思吗?对我来说,类和结构似乎是一样的。

共有1个答案

曾飞沉
2023-03-14

下面是一个的示例。请注意,更改名称时,两个变量引用的实例是如何更新的。bob现在是sue,在bob被引用的任何地方。

class SomeClass {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var aClass = SomeClass(name: "Bob")
var bClass = aClass // aClass and bClass now reference the same instance!
bClass.name = "Sue"

println(aClass.name) // "Sue"
println(bClass.name) // "Sue"

现在使用结构,我们可以看到这些值被复制,每个变量都保留了自己的一组值。当我们将名称设置为sue时,astruct中的bob结构不会更改。

struct SomeStruct {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var aStruct = SomeStruct(name: "Bob")
var bStruct = aStruct // aStruct and bStruct are two structs with the same value!
bStruct.name = "Sue"

println(aStruct.name) // "Bob"
println(bStruct.name) // "Sue"

因此,对于表示有状态的复杂实体,非常棒。但是对于只是度量值或相关数据位的值,结构更有意义,这样您就可以轻松地复制它们并使用它们进行计算或修改值,而不必担心副作用。

 类似资料:
  • 本文向大家介绍详解Swift语言中的类与结构体,包括了详解Swift语言中的类与结构体的使用技巧和注意事项,需要的朋友参考一下 类 在 Swift 中类是建立灵活的构建块。类似于常量,变量和函数,用户可以定义的类的属性和方法。Swift给我们提供了声明类,而无需用户创建接口和实现文件的功能。Swift 允许我们创建类作为单个文件和外部接口,将默认在类一次初始化来创建。 使用类的好处: 继承获得一个

  • 问题内容: 苹果公司的书“结构和类之间最重要的区别之一是,结构在代码中传递时总是被复制,而类是通过引用传递的。” 谁能帮助我了解这意味着什么?在我看来,类和结构似乎是相同的。 问题答案: 这是带有的示例。请注意,更改名称后,如何更新两个变量引用的实例。现在,曾经被引用过的任何地方。 现在,使用a 可以看到复制了值,并且每个变量都保留了自己的一组值。当我们将名称设置为时,in 中的结构不会更改。 因

  • 本文向大家介绍详解Swift语言的while循环结构,包括了详解Swift语言的while循环结构的使用技巧和注意事项,需要的朋友参考一下 Swift 编程语言中的 while 循环语句只要给定的条件为真时,重复执行一个目标语句。 语法 Swift 编程语言的 while 循环的语法是: 这里 statement(s) 可以是单个语句或语句块。condition 可以是任何表达式。循环迭代当条件(

  • 魔方加密的 PHP 规范支持标准 PHP 规范中常用的语法结构。 echo 语法为: echo statement; echo statement_1[, statement_2[, ...]]; exit 语法为: exit; exit(); exit(statement); 请注意,exit(statement); 不论表达式的值是整数还是字符串,总会输出后才终止脚本,这与标准

  • 本文向大家介绍C语言中结构与数组的区别,包括了C语言中结构与数组的区别的使用技巧和注意事项,需要的朋友参考一下 在C语言中,结构和数组都用作数据类型的容器,即在结构和数组中,我们都可以存储数据,也可以对它们执行不同的操作。 在内部实现的基础上,以下是两者之间的一些基本区别。 序号 键 结构体 数组 1 定义 可以将结构定义为用作容器的数据结构,该数据结构可以容纳不同类型的变量。 另一方面,数组是一

  • 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello World!": package main import "fmt" func main() { /* 这是我的