Optional Chaining in Swift Programming

 
Ch14.
選項串連
 
14.1  
選項串連可當做強迫解開的方法
 
可以在想要呼叫屬性、方法或索引,在選項的後面加上問號
(?) 
指定選項串連,看看選項是否不是
nil
 
範例程式
 
輸出結果
 
Dormitory has nil rooms
 
14.2  
經由選項串連呼叫屬性、方法
 
為了解釋選項串連起見,我們將程式再加以擴充。
如下所示:
 
14.2.1  
經由選項串連呼叫屬性
 
如何經由選項串連呼叫屬性,在本章第一個範例已大略看過了,
此處以另一方式說明。
 
範例程式
 
輸出結果
 
Unabel to retrieve the number of rooms
 
14.2.2  
經由選項串連呼叫方法
 
看懂了如何從選項串連呼叫屬性後,那如何從選項呼叫方法就易
懂了。我們想辦法呼叫
printNumberOfRooms
方法。
 
範例程式
 
輸出結果
 
The number of rooms is 10
 
14.3  
多重的串連
 
我們將
Location
類別定義一實例
peterLocation
指定
Location
類別
實例
peterLocation
的屬性
最後將其指定給
peter.dorm?.location
 
範例程式
 
輸出結果
 
Optional(BigHouse Building)
Optional(Hsingchang 777)
Slide Note
Embed
Share

Learn about optional chaining in Swift programming with examples involving students, dormitories, and room numbers. Explore how to handle optionals to avoid crashes and safely access nested properties.

  • Optional Chaining
  • Swift Programming
  • Error Handling
  • Nested Properties

Uploaded on Oct 01, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Ch14.

  2. 14.1 (?) nil

  3. // optional chaining class Student { var dorm: Dormitory? } class Dormitory { var numberOfRooms = 2 } let peter = Student() let rooms = peter.dorm?.numberOfRooms print("Dormitory has \(rooms) rooms")

  4. Dormitory has nil rooms

  5. 14.2 class Student { var dorm: Dormitory? } init(numberOfRooms: Int) { self.numberOfRooms = numberOfRooms } var location: Location? } class Dormitory { var numberOfRooms: Int class Location { var dormitoryName: String? var street: String? } func printNumberOfRooms() { print("The number of rooms is \(numberOfRooms)") }

  6. 14.2.1

  7. class Student { var dorm: Dormitory? } class Location { var dormitoryName: String? var street: String? } class Dormitory { var numberOfRooms: Int let peter = Student() if let roomNumber = peter.dorm?.numberOfRooms { print("Peter's dormitory has \(roomNumber) rooms") } else { print("Unabel to retrieve the number of rooms") } func printNumberOfRooms() { print("The number of rooms is \(numberOfRooms)") } init(numberOfRooms: Int) { self.numberOfRooms = numberOfRooms } var location: Location? }

  8. Unabel to retrieve the number of rooms

  9. 14.2.2 printNumberOfRooms

  10. class Student { var dorm: Dormitory? } class Location { var dormitoryName: String? var street: String? } class Dormitory { var numberOfRooms: Int // call method let peter = Student() peter.dorm = Dormitory(numberOfRooms: 10) peter.dorm!.printNumberOfRooms() func printNumberOfRooms() { print("The number of rooms is \(numberOfRooms)") } init(numberOfRooms: Int) { self.numberOfRooms = numberOfRooms } var location: Location? }

  11. The number of rooms is 10

  12. 14.3 Location peterLocation Location peterLocation peter.dorm?.location

  13. class Student { var dorm: Dormitory? } class Location { var dormitoryName: String? var street: String? } class Dormitory { var numberOfRooms: Int func printNumberOfRooms() { print("The number of rooms is \(numberOfRooms)") } init(numberOfRooms: Int) { self.numberOfRooms = numberOfRooms } var location: Location? } // multiple chain let peter = Student() peter.dorm = Dormitory(numberOfRooms: 10) let peterLocation = Location() peterLocation.dormitoryName = "BigHouse Building" peterLocation.street = "Hsingchang 777" peter.dorm?.location = peterLocation print(peter.dorm?.location?.dormitoryName) print(peter.dorm?.location?.street)

  14. Optional(BigHouse Building) Optional(Hsingchang 777)

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#