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

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.

主站蜘蛛池模板: 临猗县| 长海县| 渝北区| 贵州省| 华安县| 涟水县| 姚安县| 鸡东县| 浠水县| 堆龙德庆县| 观塘区| 武汉市| 凤庆县| 永吉县| 来凤县| 图木舒克市| 长葛市| 桓仁| 方正县| 建始县| 岳池县| 万山特区| 林州市| 宣汉县| 乌恰县| 邓州市| 京山县| 资阳市| 灵川县| 惠州市| 武宣县| 绍兴县| 扎兰屯市| 平顺县| 英超| 科技| 马关县| 白河县| 重庆市| 政和县| 新建县|