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

There's more...

Class objects are reference types that refer to the way they are stored and referenced internally. To see how these reference type semantics work, consider the following code:

class MovieReview { 
let movieTitle: String
var starRating: Int // Rating out of 5
init(movieTitle: String, starRating: Int) {
self.movieTitle = movieTitle
self.starRating = starRating
}
}

// Write a review
let shawshankReviewOnYourWebsite = MovieReview(movieTitle: "Shawshank Redemption", starRating: 3)

// Post it to social media
let reviewLinkOnTwitter = shawshankReviewOnYourWebsite
let reviewLinkOnFacebook = shawshankReviewOnYourWebsite

print(reviewLinkOnTwitter.starRating) // 3
print(reviewLinkOnFacebook.starRating) // 3

// Reconsider my review
shawshankReviewOnYourWebsite.starRating = 5

// The change visible from anywhere with a reference to the object
print(reviewLinkOnTwitter.starRating) // 5
print(reviewLinkOnFacebook.starRating) // 5

We created a review object and assigned that review to two separate constants. As an object is a reference type, it is a reference to the object that is stored in the constant, rather than a new copy of the object. Therefore, when we reconsider our review and rightly give The Shawshank Redemption five stars, we are changing the underlying object, and all references that access that underlying object will see that the starRating property has changed.

主站蜘蛛池模板: 罗甸县| 息烽县| 资中县| 嘉鱼县| 禄丰县| 丹寨县| 泉州市| 崇礼县| 墨竹工卡县| 博湖县| 荔浦县| 英山县| 靖江市| 和静县| 金溪县| 海林市| 渭源县| 高安市| 科尔| 浙江省| 陇川县| 抚顺市| 哈密市| 腾冲县| 湘乡市| 德江县| 临汾市| 蒙自县| 巴彦县| 河南省| 陈巴尔虎旗| 广丰县| 许昌县| 昆明市| 小金县| 叶城县| 神木县| 苗栗县| 和平县| 璧山县| 武隆县|