- Swift 4 Programming Cookbook
- Keith Moon
- 210字
- 2021-07-08 10:21:31
There's more...
Accessing a tuple's components via a number is not ideal as we have to remember the order of the tuple members to ensure that we are accessing the correct one; this is even more confusing when the members are of the same type. To provide some context, we can add labels to the tuple members to identify them when they are accessed. Tuple labels are defined in a similar way to parameter labels, preceding the type and separated by a : . Let's add labels to both the tuple declaration and the tuple construction, and when accessed:
func normalisedStarRating(forRating rating: Float,
ofPossibleTotal total: Float)
-> (starRating: Int, displayString: String) {
let fraction = rating / total
let ratingOutOf5 = fraction * 5
let roundedRating = round(ratingOutOf5) // Rounds to the nearest integer.
let numberOfStars = Int(roundedRating) // Turns a Float into an Int
let ratingString = "\(numberOfStars) Star Movie"
return (starRating: numberOfStars, displayString: ratingString)
}
let ratingValueAndDisplayString = normalisedStarRating(forRating: 5, ofPossibleTotal: 10)
let ratingValue = ratingValueAndDisplayString.starRating
print(ratingValue) // 3 - Use to show the right number of stars
let ratingString = ratingValueAndDisplayString.displayString
print(ratingString) // "3 Stars" - Use to put in the label
Now, at the point of access, we can be sure that we have the right tuple member.
推薦閱讀
- AngularJS Testing Cookbook
- Python機器學習:數據分析與評分卡建模(微課版)
- Android 9 Development Cookbook(Third Edition)
- 編程珠璣(續)
- Mastering Unity Shaders and Effects
- 深度強化學習算法與實踐:基于PyTorch的實現
- Securing WebLogic Server 12c
- Android Wear Projects
- Java Web開發詳解
- Unity 2018 Augmented Reality Projects
- Instant jQuery Boilerplate for Plugins
- C++程序設計教程(第2版)
- Implementing Microsoft Dynamics NAV(Third Edition)
- Software-Defined Networking with OpenFlow(Second Edition)
- Python面試通關寶典