swift语法
# 基础
# 参数标签
// 在这个函数中, than 是参数标签, 它用于在函数调用时提供更多的上下文和可读性。number 是参数名称, 它是函数内部用来引用传递给函数的整数值的名称。Int 表示参数的类型, 即函数接受一个整数作为参数
func oneMore(than number: Int) -> Int {
return number + 1
}
var myNumber = 1
// than 是参数标签, myNumber 是传递给函数的参数名称。这有助于使代码更易读懂, 尤其是在函数有多个参数时
myNumber = oneMore(than: myNumber)
print(myNumber)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
如果您愿意, 也可以省略参数标签, 函数调用会变得更加简洁, 但通常会失去一些可读性
# in-out 关键字
in-out 参数是 Swift 中的一种参数类型, 它允许函数修改调用者传递给该函数的参数的值。通常, 函数内的参数是常量, 这意味着您不能在函数内修改它们的值。但是, 如果将参数声明为 in-out, 函数可以修改该参数的值, 并且这些更改将在函数调用后保持有效
要声明 in-out 参数, 您需要在参数类型前面加上 inout 关键字。这是一个示例:
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temp = a
a = b
b = temp
}
var x = 1
var y = 2
swapTwoInts(&x, &y)
print("x is now \(x), and y is now \(y)")
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
在这个示例中, swapTwoInts 函数接受两个 in-out 整数参数 a 和 b。通过使用 & 符号, 我们将 x 和 y 变量传递给函数, 使函数能够修改它们的值。函数内部实现了一个经典的交换两个整数值的算法
需要注意的是, in-out 参数必须具有可变的存储属性, 例如变量, 而不是常量。此外, in-out 参数不能有默认值, 它们通常不能是可选类型, 并且它们不能用于不逃逸的闭包
使用 in-out 参数时要小心, 因为它们会更改原始值, 可能会导致复杂的代码行为。通常情况下, 最好避免使用 in-out 参数, 而是使用返回值来传递修改后的值
# & 关键字
在 Swift 中, & 符号用于多种不同的上下文, 它的含义取决于它的使用方式。以下是 & 符号的一些常见用途:
- 引用参数(In-Out Parameters): 在函数或方法中, 你可以将参数标记为 in-out, 以允许函数修改传递给它的参数。这时, 你需要在参数前面加上 & 符号, 表示你要传递参数的引用。例如:
func increment(_ number: inout Int) {
number += 1
}
var myNumber = 5
increment(&myNumber) // 这里需要使用 & 符号传递参数的引用
1
2
3
4
5
6
2
3
4
5
6
- 取地址(Address Of): 在某些情况下, 你可能需要获取一个变量或常量的内存地址。你可以使用 & 符号来获得它。例如:
var someValue = 42
let pointerToValue = &someValue // 获取 someValue 的内存地址
1
2
2
- 位操作(Bitwise Operations): 在位操作中, & 表示按位与运算, 用于比较两个二进制值的每一位, 只有当两者都为 1 时结果才为 1。例如:
let a: UInt8 = 0b00101010
let b: UInt8 = 0b10110000
let result = a & b // result 的值为 0b00100000
1
2
3
2
3
- 逻辑与(Logical AND): & 也可以用作逻辑与运算符, 用于组合布尔表达式中的条件。例如:
if condition1 && condition2 {
// 如果 condition1 和 condition2 都为 true, 则执行此块
}
1
2
3
2
3
这些是 & 符号在 Swift 中的一些常见用途, 其含义会根据上下文的不同而变化
上次更新: 2024/12/01, 17:07:39