สวิฟท์ตัวเลือก (optionals) ประเภท
สวิฟท์ตัวเลือก (อุปกรณ์เสริม) ประเภทที่ใช้ในการจัดการค่าที่ขาดหายไป หมายถึงตัวเลือก "ที่มีค่าและเป็นเท่ากับ x" หรือ "ไม่มีค่า".
ต่อท้ายคำนิยามภาษา Swfit? ตัวเลือกเป็นชนิดที่มีชื่อของชวเลขในคำอื่น ๆ ต่อไปนี้สองงบเทียบเท่า:
var optionalInteger: Int? var optionalInteger: Optional<Int>
ในทั้งสองกรณี optionalInteger ตัวแปรชนิดจำนวนเต็มไม่จำเป็น โปรดทราบว่าในประเภทและ? ไม่มีช่องว่างระหว่างเป็น
ตัวเลือกการแจงนับเป็นกรณีที่มีทั้งสองไม่ได้และบาง (T) ถูกนำมาใช้เพื่อแสดงว่าอาจหรือไม่อาจมีค่า ประเภทใดก็ได้สามารถประกาศอย่างชัดเจนว่า (หรือการแปลงโดยปริยาย) เลือกประเภท เมื่อคุณประกาศเลือกประเภทของเวลาให้แน่ใจว่าจะใช้วงเล็บ? ผู้ประกอบการในช่วงที่เหมาะสม ยกตัวอย่างเช่นการประกาศอาร์เรย์จำนวนเต็มเลือกควรจะเขียน (int []);? เขียนเป็น Int [] ข้อผิดพลาด
เมื่อคุณประกาศแอตทริบิวต์ตัวเลือกตัวแปรหรือตัวเลือกไม่สามารถใช้ได้เมื่อค่าเริ่มต้นค่าเริ่มต้นค่าเป็นศูนย์
ข้อตกลง LogicValue ติดตามตัวเลือกที่จะปรากฏในบริบทแบบบูล ในกรณีนี้หากประเภท T ตัวเลือก? บรรจุชนิดของค่า T ใด ๆ (กล่าวคือค่าที่เป็น Optional.Some (T)) เลือกประเภทนี้เท่ากับความจริงมิฉะนั้นมันเป็นเท็จ
ถ้าอินสแตนซ์เสริมประเภทที่มีค่าคุณสามารถใช้ประกอบกับ Postfix! เข้าถึงค่าดังต่อไปนี้:
optionalInteger = 42 optionalInteger! // 42
ใช้ตัวดำเนินการ! ที่จะได้รับตัวแปรเสริมมีข้อผิดพลาดที่ศูนย์จะมีเวลาทำงาน
คุณสามารถใช้การเชื่อมโยงตัวเลือกและผูกตัวเลือกการคัดเลือกในการดำเนินการเกี่ยวกับการแสดงออกที่ไม่จำเป็น หากมีค่าเป็นศูนย์การดำเนินงานไม่มีการดำเนินการก็จะไม่ถูกเรียกใช้ข้อผิดพลาด
ลองมาดูที่ตัวอย่างต่อไปนี้ในการเรียนรู้ประเภทตัวเลือกของการใช้งานสวิฟท์:
import Cocoa var myString:String? = nil if myString != nil { print(myString) }else{ print("字符串为 nil") }
ดังกล่าวข้างต้นผลการทำงานของโปรแกรม:
字符串为 nil
เลือกประเภทคล้ายกับค่าของตัวชี้ศูนย์ใน Objective-C แต่เพียงในชั้นเรียนศูนย์ (ชั้น) ประโยชน์ แต่ตัวเลือกสำหรับทุกประเภทของประเภทที่มีอยู่และความปลอดภัยมากขึ้น
บังคับให้แก้ไข
เมื่อคุณกำหนดชนิดไม่มีค่าตัวเลือกที่คุณสามารถเพิ่มชื่อตัวเลือกที่อยู่เบื้องหลังเครื่องหมายอัศเจรีย์ (!) เพื่อให้ได้ค่า อัศเจรีย์กล่าวว่า "ผมรู้ว่ามีค่าตัวเลือกใช้มัน." นี้เรียกว่าคุ้มค่าบังคับแจงตัวเลือก (บังคับ unwrapping)
ตัวอย่างมีดังนี้
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { print(myString) }else{ print("myString 值为 nil") }
ดังกล่าวข้างต้นผลการทำงานของโปรแกรม:
Optional("Hello, Swift!")
บังคับค่าตัวเลือกการวิเคราะห์การใช้เครื่องหมายอัศเจรีย์ (!):
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { // 强制解析 print( myString! ) }else{ print("myString 值为 nil") }
ดังกล่าวข้างต้นผลการทำงานของโปรแกรม:
Hello, Swift!
หมายเหตุ:
ใช้!
เพื่อให้ได้ค่าตัวเลือกที่ไม่มีอยู่จะมีผลในข้อผิดพลาด runtime ใช้!
ก่อนที่จะบังคับให้ค่าการวิเคราะห์คุณต้องพิจารณาเลือกที่มีไม่ใช่nil
ค่า
แยกโดยอัตโนมัติ
คุณสามารถเปลี่ยนเครื่องหมายคำถามเมื่อคุณประกาศตัวแปรเครื่องหมายอัศเจรีย์ตัวเลือก (!) (?) เมื่อใช้ตัวแปรตัวเลือกนี้คุณไม่จำเป็นต้องบวกเครื่องหมายอัศเจรีย์ (!) จะได้รับค่าก็จะแยกโดยอัตโนมัติ
ตัวอย่างมีดังนี้
import Cocoa var myString:String! myString = "Hello, Swift!" if myString != nil { print(myString) }else{ print("myString 值为 nil") }
ดังกล่าวข้างต้นผลการทำงานของโปรแกรม:
Hello, Swift!
ผูกตัวเลือก
โดยใช้การผูกตัวเลือก (ผูกพันตัวเลือก) เพื่อตรวจสอบว่าเลือกประเภทมีค่าถ้ามันมีค่าได้รับมอบหมายให้นำตัวแปรชั่วคราวหรือคงที่ ตัวเลือกผูกพันสามารถใช้ในขณะที่ถ้าและงบที่จะตัดสินค่าของเลือกประเภทและกำหนดค่าให้เป็นค่าคงที่หรือตัวแปร
เช่นถ้าคำสั่งนี้เขียนในตัวเลือกที่มีผลผูกพัน:
if let constantName = someOptional { statements }
ลองดูที่อินสแตนซ์ที่มีผลผูกพันทางเลือกที่ง่าย:
import Cocoa var myString:String? myString = "Hello, Swift!" if let yourString = myString { print("你的字符串值为 - \(yourString)") }else{ print("你的字符串没有值") }
ดังกล่าวข้างต้นผลการทำงานของโปรแกรม:
你的字符串值为 - Hello, Swift!