- Swift 4 Programming Cookbook
- Keith Moon
- 191字
- 2021-07-08 10:21:25
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.
推薦閱讀
- SQL學習指南(第3版)
- 程序員數學:用Python學透線性代數和微積分
- HTML5 and CSS3 Transition,Transformation,and Animation
- Python忍者秘籍
- Visual Basic程序設計(第三版)
- UML軟件建模
- Mastering ASP.NET Core 2.0
- iOS Development with Xamarin Cookbook
- Unity 5 Game Optimization
- FORTRAN程序設計權威指南
- Web前端開發實戰教程(HTML5+CSS3+JavaScript)(微課版)
- HTML 5與CSS 3權威指南(第4版·下冊)
- 快速搞定Spring Boot+Vue全棧開發
- Visual FoxPro程序設計
- 深度學習企業實戰:基于R語言