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