Skip to content
On this page

数据类型与变量

声明变量时可指定它的数据类型。

  • Int:整数类型

  • UInt:无符号整型,一般不推荐

  • 浮点数:浮点类型比整数类型表示的范围更大,可以存储比Int类型更大或者更小的数字

    • Double:表示 64 位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型

    • Fload:表示 32 位浮点数。精度要求不高的话可以使用此类型

TIP

Double 精确度很高,至少有 15 位数字,而 Float 最少只有 6 位数字。选择哪个类型取决于你的代码需要处理的值的范围

  • Bool

布尔常量:truefalse

  • String
swift
"imondo.cn"
  • Character

字符指单个字母

swift
"C"
  • Optional

可选类型来处理值可能缺失的情况。可选类型表示有值或没有值。

定义后缀 ? 作为命名类型 Optional 的简写,这两种写法是相等的:

swift
var num: Int?
var num1: Optional<Int>

TIP

注意,在类型和 ? 之间没有空格

Optional 是一个含有两种情况的枚举,NoneSome(T),用来表示可能有或可能没有值。

任何类型都可以明确声明为(或者隐式转换)可选类型。当声明一个可选类型的时候,要确保用括号给 ? 操作符一个合适的范围。例如,声明可选整数数组,应该写成 (Int[])? 写成 Int[]? 会报错。

当你声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil

如果一个可选类型的实例包含一个值,你可以用后缀操作符 ! 来访问这个值:

swift
num = 32
num! // 32

请注意:如果使用 ! 访问值为 nil 时,会有运行时错误。

如果值为nil,任何操作都不会执行,也不会有运行报错。

swift
import Cocoa

var str:String? = nil

if str != nil {
    print(str)
}else{
    print("字符串为 nil")
}

执行结果

swift
字符串为 nil
  • 强制解析:加 ! 强制解析
swift
import Cocoa

var str:String?

str = "Hello, Swift!"

if str != nil {
   // 强制解析
   print( str! )
}else{
   print("str 值为 nil")
}
  • 自动解析
swift
import Cocoa

var str:String! // 自动解析

str = "Hello, Swift!"

if str != nil {
   print(str)
}else{
   print("str 值为 nil")
}
  • 可选绑定:可选绑定可以用在 ifwhile 语句中来对可选类型的值进行判断并把值赋给一个常量或者变量
swift
import Cocoa

var str:String?

str = "Hello, Swift!"

if let str1 = str {
   print("你的字符串值为 - \(str1)")
}else{
   print("你的字符串没有值")
}

数值范围

类型大小(字节)区间值
Int81 字节-128 到 127
UInt81 字节0 到 255
Int324 字节-2147483648 到 2147483647
UInt324 字节0 到 4294967295
Int648 字节-9223372036854775808 到 9223372036854775807
UInt648 字节0 到 18446744073709551615
Float4 字节1.2E-38 到 3.4E+38 (~6 digits)
Double8 字节2.3E-308 到 1.7E+308 (~15 digits)

类型别名

类型别名对当前的类型定义了另一个名字,类型别名通过使用 typealias 关键字来定义。

语法格式如下:

swift
typealias newname = type

例如以下定义了 Int 的类型别名为 Feet:

swift
typealias Feet = Int

现在我们可以通过别名来定义变量

swift
import Cocoa

typealias Feet = Int
var num: Feet = 100
print(num)

输出结果仍是:

swift
100

类型安全

Swift 是一个类型安全的语言。由于是类型安全的,所以在编译时会要进行类型检查,并把不匹配的类型标记为错误。

swift
import Cocoa

var varA = 200
varA = "imondo.cn"
print(varA)

编译时,会报错。

类型推断

当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你每次声明常量和变量的时候都需要显式指定类型

如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。

swift
let num = 32
// 会推测为 Int

let PI = 3.14159
// 会被推测为 Double 类型

TIP

当推断浮点数的类型时,Swift 总是会选择 Double 而不是 Float

变量

变量声明

swift
// 存储型变量或存储型变量属性
var str = "imondo.cn"

// 常量
let num = 10
  • 变量名可以由字母,数字和下划线组成。

  • 变量名需要以字母或下划线开始。

  • Swift 是一个区分大小写的语言,所以字母大写与小写是不一样的。

变量和常量可以使用 print 函数来输出。在字符串中可以使用括号与反斜线来插入变量

如:

swift
import Cocoa

var name = "Mondo"
var site = "https://imondo.cn"

print("\(name)的首页为:\(site)")

执行结果:

swift
Mondo的首页为 https://imondo.cn

字面量

字面量,就是指像特定的数字,字符串或者布尔值,能够直接了当地指出自己的类型并为变量进行赋值的值。

  • 整型

  • 浮点型

  • 字符串型

  • 布尔型

    • true 表示真

    • false 表示假

    • nil 表示没有值