💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Swift 变量,常量和字面值 > 原文: [https://www.programiz.com/swift-programming/variables-constants-literals](https://www.programiz.com/swift-programming/variables-constants-literals) #### 在本文中,您将了解 Swift 编程中的变量,常量,字面值及其用例。 ## 什么是变量? 在编程中,变量用于将数据存储在内存中,可在整个程序中使用。 必须给每个变量一个唯一的名称,称为*标识符*。 将变量视为保存信息的容器很有帮助,以后可以更改这些信息。 从技术上讲,您可以将变量视为用于在其中存储一些书的书包,以后可以将这些书替换为其他书。 * * * ### 如何在 Swift 中声明变量? 在 Swift 中,我们使用`var`关键字来声明变量。 **示例**: ```swift var siteName:String print(siteName) ``` 我们已经声明了`String`类型的名为`siteName`的变量,这意味着它只能容纳字符串值。 访问 [Swift Strings](/swift-programming/characters-strings "Swift Strings and characters") 了解有关字符串的更多信息。 如果您尝试在游乐场中运行以上代码,则会给我们带来编译时错误(在初始化之前使用了变量),因为它不存储/包含任何值。 * * * ### 如何在 Swift 中为变量赋值? 您可以使用[赋值运算符](/swift-programming/operators#assignment "Swift 赋值运算符")(=)在变量中赋值。 #### 示例 1:声明并将值赋给变量 ```swift var siteName:String siteName = "Apple.com" print(siteName) ``` 要么 您还可以将值立即分配为 ```swift var siteName:String = "Apple.com" print(siteName) ``` 运行该程序时,输出为: ```swift Apple.com ``` 变量`siteName`现在包含值`"Apple.com"`。 * * * 由于 Swift 是[类型推断的语言](https://en.wikipedia.org/wiki/Type_inference "Swift type inference"),因此它可以自动推断(知道)`"Apple.com"`是`String`并将`siteName`声明为[ `String`。 因此,您甚至可以将声明中的`(:String)`类型删除为: #### 示例 2:Swift 中变量的类型推断 ```swift var siteName = "Apple.com" print(siteName) ``` 运行该程序时,输出为: ```swift Apple.com ``` * * * 由于`siteName`是变量,因此您也可以通过简单地使用赋值运算符但不使用`var`关键字来更改其值,例如: #### 示例 3:更改变量的值 ```swift var siteName = "Apple.com" // Assigning a new value to siteName siteName = "Programiz.com" print(siteName) ``` 运行该程序时,输出为: ```swift Programiz.com ``` * * * ## 什么是常量? 常量是变量的一种特殊类型,其值不能更改。 将常量视为保存了以后无法更改的信息的容器是有帮助的。 从技术上讲,您可以将常量视为存放某些书的书包,而将这些书放在书包中后就无法替换。 * * * ### 如何在 Swift 中声明常量? 在 Swift 中,我们使用`let`关键字声明一个变量。 **示例**: ```swift let siteName:String print(siteName) ``` 我们已经声明了一个类型为`String`的名为`siteName`的常量。 如果您尝试运行以上代码,则会给我们带来编译时错误(在初始化之前使用常量),因为它不包含/保留任何值。 * * * ### 如何在 Swift 中为常量赋值? 您可以使用赋值运算符(`=`)在与变量相同的**常量**中分配值。 #### 示例 4:声明并将值赋给常量 ```swift let siteName:String siteName = "Apple.com" print(siteName) ``` OR You can also assign the value inline as ```swift let siteName:String = "Apple.com" ``` 运行该程序时,输出为: ```swift Apple.com ``` 现在,常量`siteName`包含/持有值`"Apple.com"`。 * * * 与变量一样,可以从声明中删除类型(`:String`),如下所示: #### 示例 5:Swift 中常量的类型推断 ```swift let siteName = "Apple.com" print(siteName) ``` 运行该程序时,输出为: ```swift Apple.com ``` * * * 但是与变量不同,您不能更改常量的值。 所以,你不能做 #### 示例 6:更改常量的值(不允许) ```swift let siteName = "Apple.com" siteName = "Programiz.com" //compile time error print(siteName) ``` 上面的语句给我们带来了一个错误,因为正如我们所说的,一旦存储了数据,常量的值就无法更改。 这是变量和常量之间的关键区别。 * * * ## 什么是字面值? 字面值是直接出现在源代码中的值。 它可以是数字,字符或字符串等。例如:`"Hello, World"`,12、23.0,`"C"`是字面值的简单示例。 字面值常用于初始化变量或常量(将值赋给它们)。 **例如**: ```swift let siteName = "Apple.com" ``` 在上面的表达式中,`siteName`是变量,`"Apple.com"`是字面值。 * * * ### Swift 中字面值的类型 #### 整数字面值 它表示十进制,二进制,八进制或十六进制值。 它有四种类型。 * 二进制字面值 * 代表二进制值。 * 以`0b`开头。 * 八进制字面量 * 代表八进制值。 * 以`0o`开头。 * 十六进制字面值 * 代表十六进制值。 * 以`0x`开头。 * 小数字面值 * 代表十进制值。 * 一无所有。 您在整数字面值中声明的所有内容均为十进制类型。 **示例 7:如何在 Swift 中使用整数字面值?** ```swift let binaryNumber = 0b11111111 print(binaryNumber) print(1231) ``` 运行该程序时,输出为: ```swift 255 1231 ``` 在上面的程序中,有两个整数字面值`0b11111111`(二进制字面值)和`1231`(十进制字面值)。`11111111`的十进制值为 **255**,因此`print(binaryNumber)`语句在屏幕上输出 255。 同样,`print(1231)`在控制台中输出十进制值 **255**。 * * * #### 字符串&字符字面值 字符串字面值是由双引号引起来的字符序列,而字符字面值是由双引号引起来的单个字符。 **示例 8:如何在 Swift 中使用字符串和字符字面值?** ```swift let someCharacter:Character = "C" let someString:String = "Swift is awesome" ``` 在上面的程序中,`"C"`是字符字面值,`"Swift is awesome"`是字符串字面值。 * * * #### 浮点字面值 它用于初始化数据类型为`float`和`double`的变量。 它可以有两种类型: **十进制**: 它可以具有可选的指数,由大写或小写`e`表示。 对于指数为`exp`的十进制数字,将基数乘以`10^exp`: **示例 9:如何在 Swift 中使用十进制字面值?** ```swift let someFloat = 12.23 let someAnotherFloat = 3.14e2 print(someFloat) print(someAnotherFloat) ``` 运行该程序时,输出为: ```swift 12.23 314.0 ``` 在上面的程序中,`12.23`和`3.14e2`是浮点字面值。`3.14e2`以指数表示,并且等效于 **3.14 * 10 <sup>2</sup>** 。 **十六进制**: 十六进制浮点数必须具有由大写或小写`p`表示的指数。对于具有`exp`指数的十六进制数,基数乘以`2^exp`: **示例 10:如何在 Swift 中使用十六进制字面值?** ```swift let someFloat = 0xFp10 let someAnotherFloat = 0xFp-12 print(someFloat) print(someAnotherFloat) ``` 运行该程序时,输出为: ```swift 15360.0 0.003662109375 ``` 在上面的程序中,`0xFp10`和`0xFp-12`是浮点字面值。`0xFp10`用指数表示,等于`15 * 210`(`F`表示为十进制的 15)。 因此,`print(someFloat)`在屏幕上输出 15360.0。 同样,`0xFp-12`等于`15 * 2^-12`。 因此,`print(someAnotherFloat)`在屏幕上输出 0.003662109375。 * * * #### 布尔字面值 快速有两个布尔字面值。 它们是`true`和`false.`。 **示例 11:如何在 Swift 中使用布尔字面值?** ```swift let result:Bool = false ``` 在上面的程序中,`false`是布尔常量,它赋给常量`result`。 * * * ## 变量和常量的规则和最佳做法 1. 选择一个有意义的名称。 例如,变量`name`比变量`n`更有意义。 2. 使用`camelCase`表示法声明变量或常量。 驼峰表示法以小写字母开头。 例如: ```swift var studentName let studentAge let address ``` 3. 您也可以定义变量和常量而无需对其进行标记。 不使用名称标记意味着您不会在程序中使用它。 在许多情况下,您想创建一个未使用的变量。 在这种情况下,您可以将 _ 占位符用作: ```swift var _ = "Apple.com"//string initialized but not stored in a variable let _ = "Apple.com" ``` 甚至是有效的 ```swift _ = "Apple.com" ``` 4. 如果只需要设置一次值,而无需在程序中再次更改值,则使用常量。 但是,如果以后需要更改它,请使用变量。 5. 常量和变量名称不能包含空格字符,数学符号,箭头,专用(或无效)的 Unicode 代码点或线条和框形图字符。 它们也不能以数字开头,尽管数字可能包含在名称中的其他位置。 例如: ```swift var 12 = "Apple.com" //gives a compile error: expected pattern var @hello = "Hello" //gives a compile error: expected pattern ```