Latest web development tutorials

สวิฟท์ตัวเลือก (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!