1️⃣ 原始函数
func incrementThenDouble(_ x: Int) -> Int {
return (x + 1) * 2
}
- 输入:
x - 输出:
(x + 1) * 2 - 普通写法显式使用参数
x
2️⃣ 分解为小函数
先把函数拆成两个小函数:
func increment(_ x: Int) -> Int { x + 1 }
func double(_ x: Int) -> Int { x * 2 }
3️⃣ 使用函数组合
在 Swift 中没有内置函数组合运算符,但我们可以自己写一个简单的组合函数:
func compose<A, B, C>(_ f: @escaping (B) -> C,
_ g: @escaping (A) -> B) -> (A) -> C {
return { a in f(g(a)) }
}
compose(f, g)(x)=f(g(x))
4️⃣ 转换为 Point-Free
let incrementThenDouble = compose(double, increment)
- 不再显式使用参数
- 输入
x,输出(x + 1) * 2 - 调用示例:
let result = incrementThenDouble(3) // (3 + 1) * 2 = 8
print(result) // 8
5️⃣ 总结
- 原函数:显式提及参数
x - Point-Free:通过函数组合
compose(double, increment),不显式提及参数 - 优势:逻辑清晰、可组合、复用性高