📜  Swift变量,常量和字面量

📅  最后修改于: 2020-10-09 16:07:52             🧑  作者: Mango

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

什么是变量?

在编程中,变量用于将数据存储在内存中,可在整个程序中使用。必须给每个变量一个唯一的名称,称为identifier 。将变量视为保存信息的容器很有帮助,以后可以更改这些信息。

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


如何在Swift中声明变量?

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

例:

var siteName:String
print(siteName)

我们已经声明了一个名为siteNameString类型的变量,这意味着它只能容纳字符串值。访问Swift Strings以了解有关字符串的更多信息。

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


如何在Swift中为变量赋值?

您可以使用赋值运算符 (=)在变量中赋值。

示例1:声明并将值分配给变量
var siteName:String
siteName = "Apple.com"
print(siteName)

要么

您还可以将值inline分配为

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)

要么

您还可以将值inline分配为

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"是字符串 字面量。


浮点字面量

它用于初始化数据类型为floatdouble变量。它可以有两种类型:

小数:

它可以具有可选的指数,由大写或小写e表示。对于指数为exp的十进制数,将基数乘以10 exp

示例9:如何在Swift中使用十进制字面量 ?

let someFloat = 12.23
let someAnotherFloat = 3.14e2 
print(someFloat)
print(someAnotherFloat)

运行该程序时,输出为:

12.23
314.0

在上面的程序12.233.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

在上面的程序中, 0xFp100xFp-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


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

  1. 选择一个有意义的名称。例如, var namevar n更有意义
  2. 使用camelCase表示法声明变量或常量。驼峰表示法以小写字母开头。例如:
    var studentName
    let studentAge
    let address
    
  3. 您也可以定义变量和常量而无需对其进行标记。不使用名称标记意味着您将不在程序中使用它。在许多情况下,您想创建一个未使用的变量。在这种情况下,您可以将_占位符用作:
    var _ = "Apple.com"//string initialized but not stored in a variable
    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