翻译自:https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
Swift 是 iOS、macOS、watchOS 和 Apple tvOS app 开发的新编程语言。尽管如此,从您在C和Objective-C开发的经验来看,Swift的许多部分都会很熟悉。
Swift提供了所有基本C和Objective-C类型的自己的版本,包括用于整数的Int
、用于浮点值的Double
和Float
、用于布尔值的Bool
和用于文本数据的String
。Swift还提供了三种主要集合类型的强大版本,Array
、Set
和Dictionary
,如集合类型中所述。
与C一样,Swift使用变量通过标识名称存储和引用值。Swift还广泛使用值无法更改的变量。这些被称为常数,比C中的常数强大得多。在整个 Swift 中,常量会使用,使代码在处理不需要更改的值时更加安全、更清晰。
除了熟悉的类型外,Swift还引入了Objective-C中没有的高级类型,例如元组。元组使您能够创建和传递值分组。您可以使用元组从函数中返回多个值作为单个复合值。
Swift还引入了可选类型,用于处理值缺失的情况。可选内容要么说“有一个值,它等于x”或“根本没有值”。使用可选类似于在Objective-C中使用nil
和指针,但它们适用于任何类型,而不仅仅是类。可选选项不仅比Objective-C中的nil
指针更安全、更具表现力,而且是Swift许多最强大功能的核心。
Swift 是一种类型安全的语言,这意味着该语言可帮助您清楚地了解代码可以使用的值类型。如果您的部分代码需要String
,则类型安全可以防止您错误地传递给Int
。同样,类型安全可防止您意外地将可选String
传递给需要非可选String
的代码。类型安全可帮助您在开发过程中尽早捕获和修复错误。
常量和变量(Constants and Variables)
常量和变量将名称(如maximumNumberOfLoginAttempts
或welcomeMessage
)与特定类型的值(如数字10
或字符串"Hello"
相关联。常量的值一旦设置就无法更改,而变量将来可以设置为不同的值。
声明常量和变量
常量和变量在使用之前必须声明。您可以使用let
关键字声明常量,并使用var
关键字声明变量。以下是如何使用常量和变量来跟踪用户尝试登录次数的示例:
let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
此代码可以读作:
“声明一个名为maximumNumberOfLoginAttempts
的新常量,并给它的值10。然后,声明一个名为currentLoginAttempt
的新变量,并给它一个初始值0
。”
在本例中,允许的最大登录尝试次数被声明为常量,因为最大值永远不会改变。当前登录尝试计数器声明为变量,因为每次登录尝试失败后,此值必须递增。
您可以在一行上声明多个常量或多个变量,用逗号分隔:
代码语言:javascript复制var x = 0.0, y = 0.0, z = 0.0
注意 如果代码中的存储值不会更改,请始终将其声明为带有
let
关键字的常量。仅使用变量来存储需要能够更改的值。
类型注释
您可以在声明常量或变量时提供类型注释,以明确常量或变量可以存储的值类型。通过在常量或变量名称后放置冒号,后跟空格,后跟要使用的类型名称来编写类型注释。
此示例为名为welcomeMessage
的变量提供了一个类型注释,以指示该变量可以存储String
值:
var welcomeMessage: String
声明中的冒号的意思是“类型……”,因此上面的代码可以理解为:
“Declare a variable called welcomeMessage
that’s of type String
.”
“String
类型”一词的意思是“可以存储任何String
值”。把它想象成“可以存储的东西的类型”(或“东西的类型”)。
welcomeMessage
变量现在可以设置为任何字符串值,没有错误:
welcomeMessage = "Hello"
您可以在一行上定义同一类型的多个相关变量,用逗号分隔,并在最终变量名称后面添加单个类型注释:
代码语言:javascript复制var red, green, blue: Double
注意 在实践中,您很少需要编写类型注释。如果您在定义的点为常量或变量提供初始值,Swift几乎总是可以推断用于该常量或变量的类型,如类型安全和类型推断中所述。在上面的
welcomeMessage
示例中,没有提供初始值,因此welcomeMessage
变量的类型用类型注释指定,而不是从初始值推断。
命名常量和变量
常量和变量名几乎可以包含任何字符,包括Unicode字符:
代码语言:javascript复制let π = 3.14159
let 你好 = "你好世界"
let