简单学
1、我的第一个Swift程序
传统表明,用新语言编写的第一个程序应该在屏幕上打印“Hello,world!”。在Swift中,这可以在一行中完成:
在Swift中,这行代码是一个完整的程序。您不需要为输入/输出或字符串处理等功能导入单独的库。在全局范围编写的代码被用作程序的入口点,所以你不需要一个main()函数。您也不需要在每个语句的末尾都写分号。
2、常量和变量
使用let做一个常数,var是一个变量。在编译时不需要知道常量的值,但必须为其赋值一次。这意味着您可以使用常量来命名一次您确定一次但在许多地方使用的值。
常量或变量必须与要分配给它的值具有相同的类型。但是,您并不总是必须明确地写出类型。在创建常量或变量时提供值可让编译器推断其类型。在上面的例子中,编译器推断这myVariable是一个整数,因为它的初始值是一个整数。
如果初始值没有提供足够的信息(或者没有初始值),请在变量之后写入,并用冒号分隔来指定类型。
3、值类型
值永远不会被隐式转换为另一种类型。如果您需要将值转换为其他类型,请显式创建所需类型的实例。
4、在字符串中包含值的方法更为简单:将值写入括号中,并在括号\之前写入反斜杠()。
"""对于占用多行的字符串 使用三个双引号()。只要符合收尾引号的缩进,每个引用行开头的缩进就会被删除。
5、数组和字典
创建一个空数组或字典,请使用初始化程序语法。
-
let emptyArray = [String]() -
let emptyDictionary = [String:Float]() -
使用括号([])创建数组和字典,并通过将括号中的索引或键写入它们来访问它们的元素。在最后一个元素之后允许逗号。
控制流
1、使用if和switch制作条件语句
, 使用for- in,while和repeat- while进行循环。 条件或循环变量的括号是可选的。身体周围的括号是必需的。
在if声明中,条件必须是一个布尔表达式
- 这意味着代码如if score { ... }错误,而不是隐式比较为零。
2、可选值
使用if并let一起使用表示可能缺失的值。这些值表示为可选项。可选值包含值或包含nil以指示缺少值。在值的类型后面写一个问号?()以将该值标记为可选。
处理可选值的另一种方法是使用??运算符提供默认值。如果可选值缺失,则使用默认值。
-
let nickName:String? = nil -
let fullName:String = "John Appleseed" -
let informalGreeting = "Hi \(nickName ??fullName)"
3、交换机支持任何种类的数据和各种比较操作 - 它们不限于整数和相等性测试。
请注意,如何在let模式中使用将与之模式匹配的值分配给常量。
在匹配的switch case内部执行代码后,程序从switch语句中退出。执行不会延续到下一个案例,因此不需要在每个案例的代码末尾显式地跳出交换机。
4、字典中的for-in
for- in通过提供一对用于每个键值对的名称来迭代字典中的项目。字典是无序集合,所以它们的键和值以任意顺序迭代。
使用while重复的代码块,直到完成变化。循环的条件可以在最后,确保循环至少运行一次。
功能和关闭
1、函数的声明和使用使用func声明函数。通过使用括号中的参数列表跟随其名称来调用函数。用 -> 从函数的返回类型中分离参数名称和类型。
默认情况下,函数使用它们的参数名称作为其参数的标签。在参数名称之前写入自定义参数标签,或写入 _ 以使用不带参数标签。
2、函数与元组
使用一个元组来创建一个复合值
- 例如,从一个函数返回多个值。元组的元素可以通过名字或数字来引用。
3、函数的嵌套
函数可以嵌套。嵌套函数可以访问在外部函数中声明的变量。您可以使用嵌套函数来组织长或复杂函数中的代码。
一个函数可以返回另一个函数作为它的值。
函数可以将另一个函数作为其参数之一。
4、函数与闭包
函数实际上是闭包的一个特例:可以稍后调用的代码块。闭包中的代码可以访问变量和函数,这些变量和函数可以在创建闭包的范围中使用,即使闭包在执行时处于不同的范围
- 您已经看到一个嵌套函数的例子。你可以使用花括号({})来编写一个没有名字的闭包。用于in从正文中分离参数和返回类型。
-
numbers.map({ (number:Int) -> Int in -
let result = 3 * number -
return result -
})
可以更简洁地编写闭包的几个选项。当闭包的类型已知时,例如代理的回调,可以省略其参数的类型,其返回类型或两者。单语句闭包隐式返回其唯一语句的值。
-
let mappedNumbers = numbers.map({number in 3 * number }) -
print(mappedNumbers)
可以通过数字而不是名称来引用参数 - 这种方法在非常短的闭包中特别有用。作为函数的最后一个参数传递的闭包可以在括号之后立即出现。当闭包是函数的唯一参数时,可以完全省略括号。
-
let sortedNumbers = numbers.sorted {$0 > $1 } -
print(sortedNumbers)