Swift - ตัวเลือก

นอกจากนี้ Swift 4 ยังแนะนำ Optionalsชนิดซึ่งจัดการกับการไม่มีค่า ตัวเลือกจะบอกว่า "มีค่าและเท่ากับ x" หรือ "ไม่มีค่าเลย"

ตัวเลือกเป็นประเภทของตัวมันเองซึ่งเป็นหนึ่งใน enums พลังพิเศษใหม่ของ Swift 4 มีสองค่าที่เป็นไปได้None และ Some(T), ที่ไหน T เป็นค่าที่เกี่ยวข้องของประเภทข้อมูลที่ถูกต้องที่มีอยู่ใน Swift 4

นี่คือการประกาศจำนวนเต็มซึ่งเป็นทางเลือก -

var perhapsInt: Int?

นี่คือการประกาศสตริงที่เป็นทางเลือก -

var perhapsStr: String?

การประกาศข้างต้นเทียบเท่ากับการเริ่มต้นอย่างชัดเจน nil ซึ่งหมายความว่าไม่มีค่า -

var perhapsStr: String? = nil

ลองดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจว่าตัวเลือกต่างๆทำงานอย่างไรใน Swift 4 -

var myString:String? = nil

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังนี้ -

myString has nil value

ตัวเลือกคล้ายกับการใช้ nil ด้วยพอยน์เตอร์ใน Objective-C แต่ใช้ได้กับทุกประเภทไม่ใช่แค่คลาส

บังคับให้ยกเลิกการห่อ

หากคุณกำหนดตัวแปรเป็น optionalจากนั้นเพื่อรับค่าจากตัวแปรนี้คุณจะต้อง unwrapมัน. นี่หมายถึงการใส่เครื่องหมายอัศเจรีย์ต่อท้ายตัวแปร

ลองดูตัวอย่างง่ายๆ -

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังนี้ -

Optional("Hello, Swift 4!")

ตอนนี้เรามาใช้การแกะเพื่อให้ได้ค่าที่ถูกต้องของตัวแปร -

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print( myString! )
} else {
   print("myString has nil value")
}

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังต่อไปนี้

Hello, Swift 4!

การแกะอัตโนมัติ

คุณสามารถประกาศตัวแปรเสริมได้โดยใช้เครื่องหมายอัศเจรีย์แทนเครื่องหมายคำถาม ตัวแปรที่เป็นทางเลือกดังกล่าวจะแกะออกโดยอัตโนมัติและคุณไม่จำเป็นต้องใช้เครื่องหมายอัศเจรีย์ใด ๆ เพิ่มเติมที่ส่วนท้ายของตัวแปรเพื่อรับค่าที่กำหนด ลองดูตัวอย่างง่ายๆ -

var myString:String!
myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังนี้ -

Hello, Swift 4!

การผูกเพิ่มเติม

ใช้การเชื่อมโยงที่เป็นทางเลือกเพื่อค้นหาว่าทางเลือกมีค่าหรือไม่และถ้าเป็นเช่นนั้นเพื่อให้ค่านั้นพร้อมใช้งานเป็นค่าคงที่ชั่วคราวหรือตัวแปร

การผูกทางเลือกสำหรับ if คำสั่งมีดังนี้ -

if let constantName = someOptional {
   statements
}

ลองมาดูตัวอย่างง่ายๆเพื่อทำความเข้าใจการใช้งานการผูกเสริม -

var myString:String?
myString = "Hello, Swift 4!"

if let yourString = myString {
   print("Your string has - \(yourString)")
} else {
   print("Your string does not have a value")
}

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังนี้ -

Your string has - Hello, Swift 4!