Swift讲给你懂(3)-基本数据类型(型別)

Swift讲给你懂(2)-变量&常量(变数&常数)

目录

以下是基本的数据类型:

Int-整数

Float、Double-浮点数

整数和浮点数转换

Bool-布尔值、布林值

Character-字符、字元

String-字符串、字串

Tuple-元组

元组优点:

Array-数组、阵列

直接填入值来创建数组(阵列)

读取与修改数组

Dictionary-字典

访问字典


理解难度
★★☆☆☆
实用程度
★★★★★


依据不同的情况需求,变量或常量会需要不同的类型来执行动作,像是身高体重需要有小数点的数字;计算人数需要整数;姓名、名称需要文字字符串。依不同的情况使用不同的类型(型别)。

不管你用的是哪一个字词,理解意思比较重要,在Swift的中文翻译至少有两套不同的说法,不用去纠结哪一个才是标准说法,其实两个都不标准!标准的说法是英文。所以理解意思才是重要的,也尽可能去习惯使用英文的名词。这样一来要搜寻资料或是查一些外国的网站,可以更精准地找到自己需要的东西。

以下是基本的数据类型:

Int-整数
Float、Double-浮点数
Bool-布尔值、布林值
Character-字符、字元
String-字符串、字串
tuple-元组
Array-数组、阵列
Dictionary-字典

在使用任何程序语言编程时,在不同的情况,会使用各种数据类型来存储不同的信息。
变量的数据类型决定了如何将代表这些值的位存到电脑的内存中。
所有变量都具有数据类型,以判断以哪种类型储存。

下面就会一一说明各种的数据类型

Int-整数

整数(Int)指的是没有小数点的数字,可以有符号 (正、负、零)或是无符号 (正、零)。

Swift 提供 8 、 16 、 32 和 64 位元的有符号的整数类型,依序为Int8、Int16、Int32和Int64,以及无符号的整数类型,依序是UInt8、UInt16、UInt32和UInt64。一般情況這個不用去考慮太多。

一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:在 32 位元平台与Int32相同,在 64 位元平台则与Int64相同。

通常我们使用整数类型时,大部分情况都建议只使用Int即可。不需要小数点的,就用Int。

Float、Double-浮点数

浮点数(Float、Double)指的是有包含小数点的数字,Float跟Double的差别在于精确度,Float有 6 位数,而Double可以达到 15 位数,如下:

let piValue = 3.1415926
var height = 178.25

// 声明浮点数时 如果没有类别标注 通常会将他判断为 Double 
let oneHeight = 165.25 // 类别为 Double
let anotherHeight: Float = 175.5 // 除非类别标注填写为 Float

需要用到小数点的,用 Double 就好了。

整数和浮点数转换

整数和浮点数的转换必须指定类别。例子如下:

// 类别为整数 Int
let number1 = 3

// 类别为浮点数 Double
let number2 = 0.1415926

// 相加前 需要将 Int 转换成 Double 否则会报错误
let pi = Double(number1) + number2

// 这个值的类别也就是 Double
// 打印:3.1415926
print(pi)

相反来说也行,可以将浮点数转换成整数,而小数点后的数字就会被截断。如下:

let integerPi = Int(pi)

// 类别为 Int 小数点后的数字被截断
// 所以只会打印:3
print(integerPi)

Bool-布尔值、布林值

Swift 有一个基本的布尔(Boolean)类型,叫做 Bool。布尔值指逻辑上的值,因为它们只能是真或者假。Swift 有两个布尔常量,true 和 false。

就是“有”、“没有”;“对”、“错”;“肯定”、“否定”的概念。

let storeOpen = true
let forFree = false

Character-字符、字元

字符、字元(character)指的是依照编码格式的一个位元组(简单来说就是一个英文字母、数字或符号)。

//字符指的是单个字母,例如:
"C"

String-字符串、字串

字符串(string)是有序的字元集合(简单说就是一段文字),皆是以一对双引号"前后包起来。

//字符串是字符的序列集合,例如:
"Hello, World!"
let firstString = "Nice to meet you."
let secondString = "Nice to meet you,too."

// 声明字符串时 不论字数多少 都会判断为 String
let str1 = "It is a string ." // 类别为 String
let str2 = "b" // 类别仍然是 String
let str3: Character = "c" // 除非类别标注填写为 Character

如果要在字符串中加入其他变数或常数,要使用 \() 这个方式,如下:

let score = 80
let string = "My score is \(score) ."
// 打印:My score is 80 .
print(string)

这个\()的方法会经常地用到,练习一下,你会很喜欢的。  

Tuple-元组

理解难度
★★☆☆☆
实用程度
★★☆☆☆

元组(tuple)是将多个值组合成一个复合值,里面的类别可以不同,以一对小括号()前后包起来,每个值以逗号,分隔,如下:

// 声明一个元组并填值进去 依序是字串、整数、浮点数
let 个人资料 = ("王小明", 28, 178.65)

// 取得前面声明的 myInfo 的第三个值 因为是从 0 开始算 所以是 2
let 我的身高 = 个人资料.2

// 打印:My height is 178.25
print("我的身高 \(我的身高)公分")

// 将前面声明的 myInfo 分解成三个常数
let (名字, 年紀, 体重) = 个人资料

// 打印:My name is Kevin Chang .
print("我的名字是 \(名字) .")

// 打印:I am 25 years old . 
print("我 \(年紀) 歲")

// 如果只需要其中某些值时,分解时可以把不需要的用底线 _ 标记

let (_, _, 身高) = 个人资料

// 打印:My height is 178.25 .
print("我的身高 \(身高)公分")

元组中的每个值不需要是同一类型。

更多的機會是使用下面要介紹的Array数组(阵列)。

元组优点:

 1、元组可以同时存储多种类型元素,且元素类型固定,以保数据安全,除非你定义数据类型为Any。编译器会对赋值参数类型进行检查
 2、元组的元素个数固定,不允许增加、删除,编译器会严格校验赋值参数个数

Array-数组、阵列

理解难度
★★☆☆☆
实用程度
★★★★

数组、阵列(Array)使用有序列表储存同一类别的多个值。相同的值可以多次出现在一个阵列的不同位置中。

声明数组(阵列)变数或常数时的类别,有Array<Element>及[Element]两种方式(Element是需要明确表示的类别,如Int、String、Double等等),如下:

// 声明储存 Int 类别的数组
var arr: Array<Int>
var arr2: [Int]
// 两种数组类别表示方式 在功能上是一样的 所以用第二种就好

// 声明一个类别为 Int 的空数组
var arr3 = [Int]()

// 这时如果又要再将这个数组指派成空数组
// 因为前面声明时已经定义好类别
arr3 = []

// 或是首次声明变数时 有明确定义好类别 也可以使用 []
var anotherArr: [Int] = []

可以很简单的使用 [ ] 来指派成空数组。

直接填入值来创建数组(阵列)

也可以直接填入值来创建数组(阵列),每个值以逗号,分隔,如下:

var shoppingList: [String] = ["Eggs", "Milk"]
// 即创建了一个类别为 [String] 且包含两个值的数组

var anotherList = ["Rice", "Apples"]
// 因为数组包含着类别为 String 的值
// Swift 可以推断这个数组的类别为 [String]

Swift 会自动的类别推断,所以数组中如果明确的表示了是什么类别的值,就不用再标注类别。 

读取与修改数组

一开始就说过数组(阵列)是有序的集合,所以可以依照索引值(依照顺序的排列序号)来取得数组(阵列)内的值,如下:数组的索引值,也就是第一個值是从 0 开始算起

var 我的数组 = ["苹果", "鸡蛋", "牛奶", "米", "水"]

// 数组的索引值是由 0 开始计算 所以 arr4[2] 指的是第三个
// 想要打印:牛奶
print(我的数组[2])

// 要修改一个索引值对应的值 直接将其指派新的值就可以了
我的数组[2] = "橙子"
// 这时已将 牛奶 改成 橙子 所以会打印:橙子
print(我的数组[2])

// 如果要修改一个区间内的值 可以使用区间写法修改
我的数组[1...4] = ["牛奶"]
// 这样会将原本索引值 1 到 4 的值修改成 牛奶
// 所以现在 我的数组 会变成 ["苹果", "牛奶"]
print(我的数组)

想想看,“我的数组”打印出来的数组是什么? 

数组是可变集合。它们创建起来非常有效,但始终必须是单一类型

Dictionary-字典

理解难度
★★★☆☆
实用程度
★★★☆☆

字典(Dictionary)用来储存多个相同类别的值。每个值(value)都属于一个唯一的键(key),键作为字典中这个值的识别符号,所有键的类别也必须相同(键与值的类别不一定要相同)。

因为字典内的值没有顺序,所以需要根据这个键(key)来找到需要的值(value)。声明字典类别时,使用Dictionary<Key, Value>这个方式,这里的Key表示字典里键的类别,Value表示字典里储存的类别,如下:

// 声明一个字典类别
var someDict: Dictionary<String, String>

// 或是这样也可以
var someAnotherDict: [String: String]

// 创建一个空字典。如果已经有类别标注了,则可以使用[:]设为空字典,如下:

// 声明一个空字典 键的类别是 String , 值的类别是 Int
var 我的字典 = [String: Int]()

// 在字典中新增一个值
我的字典["one"] = 1

// 再将字典设为空字典,因为前面已经有类别标注过了 所以使用 [:] 
我的字典 = [:]

访问字典

我们可以通过以下实例来学习如何创建,初始化,访问字典:

var 一个字典:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

var someVar = 一个字典[1]

print( "key = 1 的值为 \(someVar)" )
print( "key = 2 的值为 \(一个字典[2])" )
print( "key = 3 的值为 \(一个字典[3])" )

想想看,上面三个打印出来的是什么结果?  

以上就是各种的数据类型的基本介绍。

以后会更多说明该怎么应用、访问和修改。

iOS开发-学习Swift...看了那么多教程,看懂了吗?快速进入编程,成为开发者Swift是一种功能强大且易于学习的iOS、macOS等编程语言。学习如何为Swift编码可以很简单,很有趣,你可以用它来构建很棒的应用程序!这里将会说明学习Swift编码的简单方法和流程。现在是学习Swift的好时机Swift 5之后,ABI 稳定了。喜欢近一步了解理论的,自己去查一下是什么意思吧。简单来说,ABI 的稳定说明Swift 已经是一门成熟的编程语言,否则用程序员的话来调侃,“自从学了 Swift 之后,每年都要学一门新语言”。Swift 1、Swift 2、Swift 3、Swi.https://blog.csdn.net/weixin_42385177/article/details/121309969

Guess you like

Origin blog.csdn.net/weixin_42385177/article/details/121385190