Xcode升级,什么appdelegate都没有了,现在全是swiftUI。。。
下面的代码是playground的代码,不是swiftUI View。
参考资料:
https://www.hackingwithswift.com/100/swiftui/6
https://www.hackingwithswift.com/100/swiftui/7
时间:10 October, 2020
运行快捷键:shift+command+回车
删除当前行:option+D
let driving = {
print("I'm driving in my car")
}
driving()
let driving = { (place: String) in
print("I'm going to \(place) in my car")
}
driving("London")
let drivingWithReturn = { (place: String) -> String in
return "I'm going to \(place) in my car"
}
let message = drivingWithReturn("London")
print(message)
let driving = {
print("I'm driving in my car")
}
func travel(action: () -> Void) {
print("I'm getting ready to go.")
action()
print("I arrived!")
}
travel(action: driving)
不用再定义闭包参数了
func travel(action: () -> Void) {
print("I'm getting ready to go.")
action()
print("I arrived!")
}
travel() {
print("I'm driving in my car")
}
//可以简写成
travel {
print("I'm driving in my car")
}
func travel(action: (String) -> Void) {
print("I'm getting ready to go.")
action("London")
print("I arrived!")
}
travel { (place: String) in
print("I'm going to \(place) in my car")
}
func travel(action: (String) -> String) {
print("I'm getting ready to go.")
let description = action("London")
print(description)
print("I arrived!")
}
travel { (place: String) -> String in
return "I'm going to \(place) in my car"
}
原始
func travel(action: (String) -> String) {
print("I'm getting ready to go.")
let description = action("London")
print(description)
print("I arrived!")
}
travel { (place: String) -> String in
return "I'm going to \(place) in my car"
}
去掉输入参数类型
travel { place -> String in
return "I'm going to \(place) in my car"
}
去掉返回值类型
travel { place in
return "I'm going to \(place) in my car"
}
闭包只有一行代码,可以去掉return关键字
travel { place in
"I'm going to \(place) in my car"
}
可以用下标表示第几个传入参数,从而代替关键字
travel {
"I'm going to \($0) in my car"
}
写成这样,谁知道这是在干啥。。
func travel(action: (String, Int) -> String) {
print("I'm getting ready to go.")
let description = action("London", 60)
print(description)
print("I arrived!")
}
travel {
"I'm going to \($0) at \($1) miles per hour."
}
func travel() -> (String) -> Void {
return {
print("I'm going to \($0)")
}
}
let result = travel()
result("London")
//不建议
let result2 = travel()("London")
虽然变量counter在函数内部,但是这个变量用在了闭包中, 这个时候就会发生闭包捕获的情况,也就是保持变量状态。
func travel() -> (String) -> Void {
var counter = 1
return {
print("\(counter). I'm going to \($0)")
counter += 1
}
}
let result = travel()
result("London")
result("London")
result("London")
result("London")