官术网_书友最值得收藏!

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.

主站蜘蛛池模板: 台江县| 兴文县| 台北县| 安庆市| 浦北县| 凤山县| 康定县| 海口市| 盐亭县| 疏附县| 鄂托克前旗| 宁陵县| 固始县| 绥宁县| 陕西省| 赣榆县| 道孚县| 罗田县| 海伦市| 商都县| 锡林浩特市| 嘉善县| 富川| 镇坪县| 连平县| 北京市| 团风县| 彰化县| 徐州市| 新龙县| 大厂| 洛隆县| 邛崃市| 临漳县| 城口县| 平凉市| 石首市| 苗栗县| 文水县| 安阳市| 峨边|