0x00 Lesson
We just made a travel() function. It accepts one parameter, which is a closure that itself accepts one parameter and returns a string. That closure is then run between two calls to print().
Here’s that in code:
func travel(action: (String) -> String) {
print("I'm getting ready to go.")
let descripton = action("London")
print("description")
print("I arrived!")
}
We can call travel() using something like this:
travel { (place: String) -> String in
return "I'm going to \(place) in my car"
}
However. Swift knows the parameter to that closure must be a string, so we can remove it:
travel { place -> String in
return "I'm going to \(place) in my car"
}
It also knows the closure must return a string, so we can remove that:
travel { place in
return "I'm going to \(place) in my car"
}
As the closure only has one line of code that must be the one that returns the value, so Swift lets us remove the return keyword too:
travel { place in
"I'm going to \(place) in my car"
}
Swift has a shorthand syntax that lets you go even shorter. Rather than writing place in we can let Swift provide automatic names for the closure’s parameters. These are named with a dollar sign, then a number counting from 0.
travel {
"I'm toing to \($0) in my car"
}
0x01 我的小作品
欢迎体验我的作品之一:小五笔 五笔学习好帮手 App Store 搜索即可~
好文链接
发表评论