01_Swift基础语法

2020-09-11  本文已影响0人  LazyLoad

前言

为什么要学习Swift?(个人观点)

  1. Swift是苹果公司推出的语言,目的是为了取代Objective-C,未来苹果公司一定会加大Swift的推广和发展。
  2. Swift5.x的ABI已经稳定,这就意味着Swift不会发生巨大的改变,即使再更新一些版本,也不会出现项目大面积的报错,一些函数无法使用的情况了。
  3. iOS作为大前端的一份子,整个大前端的趋势偏向了声明式的编程,比如Vue、React、Flutter、微信小程序等,而且苹果也在iOS13出现的时候,发布了SwiftUI这种声明式编程的方式。而SwiftUI的使用基于掌握Swift语言的。

综上,现阶段作为一个iOS开发者,掌握Swift语言已经是必备的了。

学习Swift最权威的地址就是他的官方文档

Swift是开源的,我们可以从GitHub上获取Swift源码

废话不多说,我们一起来学习和探索Swift吧。

基础语法

来到了Swift的世界,我们首先是和这个世界打个招呼。Hello World! 是学习一门语言的必经之路!

print("Hello World!") // Hello World!

在Swift中,一般情况下,一句代码的结尾是可以省略分号(;)的。什么时候需要加分号呢?当两句代码写在同一行的时候,需要用分号隔开。

1.1 常量和变量

// 声明一个常量
let num = 10

num = 20 // 报错 Cannot assign to value: 'num' is a 'let' constant
---------------------------------------------------------------------------------------------
func getNum() -> Int {
    return 30
}
// 接收一个函数的返回值
let num = getNum()
// 声明一个变量
var num2 = 20
num2 = 40
print(num2) // 40

以上我们定义了一个常量,一个变量,而我们却没有指定他们的类型。这是因为Swift的编译器会自动进行类型的推导,以上2个例子编译器会将他们自动推导为Int类型。我们是可以查看他们的类型的,这里介绍一种方式,按住option键(会出现一个问号,点击变量/常量就可以看到他的具体类型了。

let a:Int
var b:Int
print(a) // Constant 'a' used before being initialized
print(b) // Variable 'b' used before being initialized
let c  // Type annotation missing in pattern

1.2 整型和浮点类型

Swift中定义了许多整数类型:Int8Int16Int32Int64UInt8UInt16UInt32UInt64。后面的数值代表的是位数。

而我们最 常用的是Int类型,在不同的平台下,Int类型代表不同的位数,32位平台Int相当于Int32,而64位平台Int相当于Int64

浮点类型有2个:FloatDouble

Float:32位精度只有6位。

Double:64位精度至少15位。

如果不明确指定类型,编译器默认推导为Double类型。

let value = 10.0 // Double 类型

1.3 字符串插值

let name = "YaoMing"
let age = 39
print("My name is \(name) and My age is \(age + 1)")
// My name is YaoMing and My age is 40

1.4 元组类型

Swift中大部分类型其他语言中都有,但是元组类型是很多语言中没有的。

元组可以将多个值分组成为一个复合值,元组中的值可以是不同类型的。下面的例子中,用元组来表示网络请求一些状态

当我们需要返回多个值的时候,就可以使用元组类型

let http404Error = (404, "Not Found")
print("The status code is \(http404Error.0)")
print("The status message is \(http404Error.1)")
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
print("The status message is \(statusMessage)")
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")

1.5 类型安全

Swift是类型安全的语言,不同类型的数据是不能相互进行传值和计算的。

let x: Int = 20
let y: Double = 3.13

let result = x + y // 报错 Binary operator '+' cannot be applied to operands of type 'Int' and 'Double'
let result1 = x + Int(y)
let result2 = Double(x) + y
print(result1)
print(result2)
上一篇 下一篇

猜你喜欢

热点阅读