16.Swift学习之结构体

结构体的介绍

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

定义语法

struct 结构体名称 {
    // 属性和方法
}
  • 举例
struct Resolution {
      var width = 0
      var height = 0 
  }
  • 解读
    • 定义了一个名叫 Resolution的新结构体,用来描述一个基于像素的显示器分辨率
    • 这个结构体拥有两个存储属性名叫 width和 height

结构体实例

  • 构造函数语法最简单的是在结构体名字后面写上(),这样就创建了一个新的结构体的实例,任何属性都被初始化为它们的默认值
let someResolution = Resolution()

访问属性

  • 可以用点语法来访问一个实例的属性。
print("The width of someResolution is \(someResolution.width)")

结构体类型的成员构造函数

  • 所有的结构体都有一个自动生成的成员构造函数,可以使用它来初始化成员属性
  • 可以通过属性名称传递到成员构造函数中
let vga = Resolution(width: 640, height: 480)

结构体是值类型

  • 值类型是一种当它被指定到常量或者变量,或者被传递给函数时会被拷贝的类型。Swift 中的结构体是值类型,那么它在代码传递中总是被拷贝
//创建一个结构体
let hd = Resolution(width: 1920, height: 1080)
//值类型拷贝
var cinema = hd
cinema.width = 2048
println("cinema is now \(cinema.width) pixels wide")
//虽然cinema改变了,但是hd的值并未改变
print("hd is still \(hd.width) pixels wide")

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏赵俊的Java专栏

合并排序数组 Ⅱ

18040
来自专栏云霄雨霁

子字符串查找----Boyer-Moore算法(从右向左匹配)

14100
来自专栏赵俊的Java专栏

删除元素

10110
来自专栏java学习

面试题53(考察求职者对String声明变量在jvm中的存储方法)

(单选题) 1、有如下一段代码,请选择其运行结果() public class StringDemo{ private static final Stri...

30930
来自专栏武培轩的专栏

Leetcode#557. Reverse Words in a String III(反转字符串中的单词 III)

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

8740
来自专栏向治洪

Kotlin之基本语法

在今年Google IO大会上Google已经明确kotlin作为为Android第一官方语言的地位。我相信Google的决意,就像当初毫不犹豫的抛弃eclip...

26570
来自专栏老马说编程

(89) 正则表达式 (中) / 计算机程序的思维逻辑

上节介绍了正则表达式的语法,本节介绍相关的Java API。 正则表达式相关的类位于包java.util.regex下,有两个主要的类,一个是Pattern,另...

20170
来自专栏柠檬先生

JavaScript 基础(六) 数组方法 闭包

在一个对象中绑定函数,称为这个对象的方法。 在JavaScript 中,对象的定义是这样的;     var guagua = {         na...

282100
来自专栏海说

Java源码学习 -- java.lang.String

java.lang.String是使用频率非常高的类。要想更好的使用java.lang.String类,了解其源代码实现是非常有必要的。由java.lang.S...

22000
来自专栏微信公众号:Java团长

Java正则表达式入门

1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查...

12120

扫码关注云+社区

领取腾讯云代金券