swift - 从函数返回闭包——(期望 2 个参数,但 1 在闭包体中使用)
问题描述
我刚刚开始学习 SwiftUI。我想知道是否有人可以给我一个建议。
我很难理解为什么下面的代码有错误,但如果我改为print("I'm driving to \($1).")
. 在这里使用有什么问题\($0)
?似乎没有问题print("I'm cycling \($0) to \($1).")
。
import SwiftUI
func createTravelMethod(distance: Int) -> (String, String) -> Void {
if distance < 5 {
return {
print("I'm walking to \($1).")
}
} else if distance < 20 {
return {
print("I'm cycling \($0) to \($1).")
}
} else {
return {
print("I'm driving to \($0).")
}
}
}
let travelMethod = createTravelMethod(distance: 15)
travelMethod("London", "Paris")
解决方案
尝试这个:
import SwiftUI
func createTravelMethod(distance: Int) -> (String, String) -> Void {
if distance < 5 {
return {
print("I'm walking to \($1).")
}
} else if distance < 20 {
return { a, b in
print("I'm cycling \(a) to \(b).")
}
} else {
return { a, b in
print("I'm driving to \(a).")
}
}
}
let travelMethod = createTravelMethod(distance: 15)
travelMethod("London", "Paris")
或这个:
func createTravelMethod(distance: Int) -> (String, String) -> Void {
return {
if distance < 5 {
print("I'm walking to \($1).")
} else if distance < 20 {
print("I'm cycling \($0) to \($1).")
} else {
print("I'm driving to \($0).")
}
}
}
let travelMethod = createTravelMethod(distance: 15)
travelMethod("London", "Paris")
推荐阅读
- javascript - 更新按钮上的值:单击事件vue js
- html - 引导行>列选择问题
- azure-devops - Gitversion 在 devops 构建中使用日期作为主要版本
- python - 在 Python 中列出 WooCommerce 购买
- php - Pipedrive - 更新潜在客户返回 404 未找到
- c - 输入 0 时,如何使我的 while scanf 循环终止?
- r - 在嵌套的小标题中分组汇总(带有排列)
- kubernetes - 如何在 kubernetes 中按顺序在多个节点上运行 cronjob?
- php - 事务模式下的 CodeIgniter 与 PostgreSQL 和 PgBouncer
- flutter - Flutter:导航器在后退按钮上显示错误的页面