Swift 变量,常量和字面量

在本文中,您将了解Swift编程中的变量,常量,字面量及其示例。

什么是变量?

在编程中,变量用于将数据存储在内存中,可在整个程序中使用。但必须给每个变量一个唯一的名称,称为identifier(标识符)。可以将变量看作保存信息的容器,并且以后可以更改这些信息。

从技术上讲,您可以将变量视为用于在其中存储书包的一些书,以后也可以将这些书替换为其他书籍。

如何在Swift中声明变量?

在Swift中,我们使用var关键字声明变量。

var siteName:String
print(siteName)

我们已经声明了一个名为 siteNametype 的String变量,这意味着它只能保存字符串值。访问Swift字符串可以了解有关字符串的更多信息。

如果您尝试在Playground中运行以上代码,则会给我们带来编译时错误(在初始化之前使用变量),因为它没有存储/包含任何值。

如何在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”是一个字符串,并声明siteName为String类型。因此,您甚至可以将(:String)声明中的类型删除为:

示例2:在Swift中类型推断的变量

var siteName = "Apple.com"
print(siteName)

运行该程序时,输出为:

Apple.com

由于siteName是一个变量,因此您还可以通过简单地使用赋值运算符来更改其值,而无需使用var关键字,例如:

示例3:更改变量的值

var siteName = "Apple.com" 

// 为siteName分配一个新值
siteName = "(cainiaoplus.com)"
print(siteName)

运行该程序时,输出为:

(cainiaoplus.com)

什么是常量?

常量是变量的一种特殊类型,其值不能更改。将常量视为保存以后无法更改的信息的容器。

从技术上讲,您可以将常量视为用于存储某些书籍的书包,而将这些书放入书包后就无法替换。

如何在Swift中声明常量?

在Swift中,我们使用 let 关键字来声明变量。

let siteName:String
print(siteName)

我们已经声明了一个名为 siteNametype 的常量字符串。

如果您尝试运行以上代码,则会给我们带来编译时错误(初始化之前使用常量),因为它不包含/保留任何值。

如何在Swift中为常量分配值?

您可以使用赋值运算符(=)在与变量相同的常量中赋值。

示例4:声明一个值并将其分配给一个常量

let siteName:String
siteName = "Apple.com"
print(siteName)

或者

也可以将值内联指定为

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 = "(cainiaoplus.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 2

十六进制:

十六进制浮点数必须具有一个由大写或小写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。

布尔字面量

swift中有两个布尔字面值。他们分别是 true 和 false.。

示例11:如何在Swift中使用布尔字面量?

let result:Bool = false

在上面的程序中,false 是一个布尔常量,它被分配给常量result。

变量和常量的规则和最佳做法

  1. 选择一个有意义的名称。例如,var name var n 更有意义

  2. 使用camelCase 表示法声明变量或常量。驼峰表示法是以小写字母开头。例如:

    var studentName
    let studentAge
    let address
  3. 您也可以定义变量和常量而无需对其进行标记。 不使用名称标记意味着您将不在程序中使用它。 在许多情况下,您想创建一个未使用的变量。 在这种情况下,您可以将_占位符用作:

    var _ = "Apple.com" //字符串已初始化,但未存储在变量中
    let _ = "Apple.com"

                甚至这也是有效的

    _ = "Apple.com"
  4. 如果只需要设置一次值,而无需在程序中再次更改它,则使用常量。但是,如果以后需要更改它,请使用变量。

  5. 常量和变量名不能包含空格字符、数学符号、箭头、私用(或无效) Unicode 代码点或线条和框图字符。它们也不能以数字开头,尽管数字可能包含在名称的其他地方。

    var 12 = "Apple.com" //gives a compile error: expected pattern
    var @hello = “Hello” //gives a compile error: expected pattern