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

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.

主站蜘蛛池模板: 贡觉县| 张家川| 布拖县| 海林市| 阜新市| 五大连池市| 洪湖市| 龙川县| 云浮市| 即墨市| 乌兰县| 通山县| 鹿泉市| 江油市| 绍兴市| 界首市| 祁连县| 进贤县| 谢通门县| 招远市| 蓝田县| 竹北市| 晋江市| 南投县| 望都县| 江山市| 洛阳市| 临高县| 石林| 福州市| 天津市| 沁水县| 金昌市| 临夏市| 山东| 阿勒泰市| 新乐市| 汉沽区| 中西区| 独山县| 嘉鱼县|