# 变量和常量

使用 let 来声明常量，使用 var 来声明变量。一个常量的值，在编译的时候，并不需要有明确的值，但是你只能为它赋值一次。这说明你可以用一个常量来命名一个值，一次赋值就可在多个地方使用。

## 变量

```swift
// 声明一个Int类型的变量，并初始化值0
var x1: Int = 0

// 声明一个Int类型的变量，变量的数据类型由Swift自动推断
var x2 = 1

// Swift 是强类型语言，是类型推断，不是类型约束，故下面的代码报错
// x2 = "x2"

// 声明多个变量，并初始化
var x2 = 0.1, x2 = 0.2, x3 = 0.3

// 声明多个变量，部分初始化，也可全部不初始化
var y1: Double, y2: Double, y3 = 0.3
```

## 常量

```swift
// 定义一个Int类型的常量
let a = 10

// 常量可以先声明，后赋值
let b: Int
b = 20

// 常量赋值后，不能再次赋值，只能赋值一次
// b = 30

// 未赋值的常量不可以使用，所以下面的代码报错
let c: Int
// print(c)
```

## 变量、常量的命名规则

常量和变量不能包含数学符号、箭头、保留的或者非法的Unicode码位、连线、制表符，同时也不能以数字开头，除此之外，其他任何字符都是可用的：

```swift
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"
```

如果你想用swift的保留字来定义变量名，可以使用反引号来定义：

```swift
let `let` = 10
print(`let`)
```
