swift学习: 初见/基本语法学习

基本语法学习
更新于: 2024-04-16 22:54:16

数据类型

实际中,swift 可以自动推断类型,这些类型都可以省略。

Swift中有许多基本的变量类型,以下是一些最常用的类型及其示例:

1. Int: 整数类型,可以是正数,负数,或者零。

```swift
var myInt: Int = 10
```
2. Double: 双精度浮点数类型,用来表示有小数的数值。

```swift
var myDouble: Double = 10.5
```
3. Bool: 布尔类型,表示真或假。

```swift
var myBool: Bool = true
```
4. String: 字符串类型,用来表示文本。

```swift
var myString: String = "Hello, Swift!"
```
5. Array: 数组类型,可以包含多个相同类型的元素。

```swift
var myArray: [Int] = [1, 2, 3, 4, 5]
```
6. Dictionary: 字典类型,包含键值对。

```swift
var myDictionary: [String: Int] = ["Apple": 1, "Banana": 2, "Orange": 3]
```
7. Optional: 可选类型,表示一个值可能存在,也可能不存在。

```swift
var myOptional: Int? = nil
```
以上就是一些基本的Swift变量类型,通过改变这些类型,你可以创建出各种各样的数据结构和复杂类型。

空数组/空字典

let emptyArray: [String] = []
let emptyDictionary: [String: Float] = [:]

闭包

let mappedNumbers = numbers.map({ number in 3 * number })
print(mappedNumbers)

let sortedNumbers = numbers.sorted { $0 > $1 }
print(sortedNumbers)

函数/参数标签

// 正常需要带标签调用
func backward(s1: String, s2: String) -> Bool {
    return s1 > s2
}

let result = backward(s1: "Hello", s2: "World")

// ----- 有忽略的情况
func greet(_ name: String, _ day: String) {
    print("Hello \(name), today is \(day).")
}
greet("Bob", "Tuesday")

类 vs 结构体

虽然 Swift 中的类(class)和结构体(struct)在功能上很相似(比如都可以定义属性和方法),但是它们在一些关键点上存在重要的不同,这足以使你在各种不同的情况下选择使用不同的类型。因此,类不能完全代替结构体,反之亦然。以下是一些关键的不同:

1. 值类型与引用类型:结构体是值类型,这意味着当你将结构体实例赋值给一个新变量或者当你传递它作为函数参数时,实际上会创建一个新的实例(包括所有属性的复制)。而类是引用类型,如果你将类实例赋值给新的变量,或者作为函数参数传递,都是分享同一个实例引用,改变一个,其他所有的引用都会受到影响。
2. 继承:类支持继承,这意味着一个类可以继承另一个类的特性,而结构体不支持。
3. 类型转换:类实例可以进行运行时类型检查和转换,而结构体实例不可以。
4. 析构函数:类可以定义析构器来进行清理操作,然而结构体没有析构器。
5. 引用计数:只有类有引用计数功能,这允许多个引用指向同一个类实例。
总的说来,你使用类还是结构体,取决于你的具体需求。如果需要共享状态或者使用继承来复用代码,使用类。如果需要值语义或更小的数据结构,使用结构体。

参考