Jenis pilihan Swift


Jenis Pilihan Swift, digunakan untuk mengendalikan nilai yang tiada. Pilihan bermaksud "ada nilai di sana dan ia sama dengan x" atau "tiada nilai di sana".

Bahasa Swift mentakrifkan akhiran? Sebagai singkatan untuk jenis bernama Optional, dengan kata lain, dua pengisytiharan berikut adalah setara:

var optionalInteger: Int?
var optionalInteger: Optional<Int>

Dalam kedua-dua kes, pembolehubah pilihanInteger ialah jenis integer pilihan. Perhatikan bahawa antara jenis dan ? Tiada ruang antara mereka.

Pilihan ialah penghitungan dengan dua kes, Tiada dan Beberapa(T), digunakan untuk menunjukkan bahawa mungkin terdapat atau mungkin tiada nilai. Mana-mana jenis boleh diisytiharkan secara eksplisit sebagai (atau ditukar secara tersirat kepada) jenis pilihan. Apabila mengisytiharkan jenis pilihan, pastikan anda menggunakan kurungan? Skop yang sesuai untuk pengendali. Contohnya, untuk mengisytiharkan tatasusunan integer pilihan, anda harus menulisnya sebagai (Int[])?; jika anda menulisnya sebagai Int[]?, ralat akan dilaporkan.

Apabila anda mengisytiharkan pembolehubah pilihan atau sifat pilihan tanpa memberikan nilai awal, nilainya akan lalai kepada sifar.

Pilihan pilihan mengikut protokol LogicValue dan oleh itu boleh muncul dalam persekitaran Boolean. Dalam kes ini, jika jenis pilihan T? mengandungi sebarang nilai jenis T (iaitu, nilainya Pilihan. Sesetengah(T)), jenis pilihan adalah sama dengan benar, jika tidak ia adalah palsu.

Jika tika jenis pilihan mengandungi nilai, anda boleh menggunakan operator postfix! Untuk mengakses nilai ini, lihat seperti ini:

optionalInteger = 42
optionalInteger! // 42

Gunakan operator! Mendapatkan semula pembolehubah pilihan dengan nilai sifar akan menyebabkan ralat masa jalan.

Anda boleh melakukan operasi secara selektif pada ungkapan pilihan menggunakan rantaian pilihan dan pengikatan pilihan. Jika nilainya sifar, tiada operasi akan dilakukan dan tiada ralat masa jalan akan dilaporkan.

Mari kita lihat secara terperinci contoh berikut untuk memahami aplikasi jenis pilihan dalam Swift:

import Cocoa

var myString:String? = nil

if myString != nil {
    print(myString)
}else{
    print("字符串为 nil")
}

Hasil pelaksanaan program di atas ialah:

字符串为 nil

The jenis pilihan adalah serupa dengan Objektif -Nilai nil penunjuk dalam C, tetapi nil hanya berguna untuk kelas, manakala jenis pilihan tersedia untuk semua jenis dan lebih selamat.


Paksa menghurai

Selepas anda pasti bahawa jenis pilihan memang mengandungi nilai, anda boleh menambah tanda seru (!) selepas nama pilihan untuk mendapatkan nilai. Tanda seru ini bermaksud "Saya tahu pilihan ini mempunyai nilai, sila gunakannya." Ini dipanggil pembuka paksa nilai pilihan.

Contoh adalah seperti berikut:

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

Hasil pelaksanaan program di atas ialah:

Optional("Hello, Swift!")

Penghuraian paksa nilai pilihan, menggunakan tanda seru (!):

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   // 强制解析
   print( myString! )
}else{
   print("myString 值为 nil")
}

Atur cara di atas Hasil pelaksanaan ialah:

Hello, Swift!

Nota:
Menggunakan ! untuk mendapatkan nilai pilihan yang tidak wujud akan menyebabkan ralat masa jalan. Sebelum menggunakan ! untuk memaksa menghurai nilai, pastikan pilihan mengandungi nilai selain daripada nil.


Penghuraian automatik

Anda boleh menggantikan tanda soal (?) dengan tanda seru (!) apabila mengisytiharkan pembolehubah pilihan. Dengan cara ini, pembolehubah pilihan tidak perlu menambah tanda seru (!) untuk mendapatkan nilai apabila menggunakannya, ia akan diselesaikan secara automatik.

Contohnya adalah seperti berikut:

import Cocoa

var myString:String!

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

Hasil pelaksanaan program di atas ialah:

Hello, Swift!

Pengikatan pilihan

Gunakan pengikatan pilihan untuk menentukan sama ada jenis pilihan mengandungi nilai Jika ya, tetapkan nilai kepada pemalar atau pembolehubah sementara. Pengikatan pilihan boleh digunakan dalam penyataan if dan while untuk menilai nilai pilihan dan menetapkan nilai kepada pemalar atau pembolehubah.

Tulis pengikatan pilihan dalam pernyataan if seperti ini:

if let constantName = someOptional {
    statements
}

Mari kita lihat contoh pengikatan pilihan yang mudah:

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if let yourString = myString {
   print("你的字符串值为 - \(yourString)")
}else{
   print("你的字符串没有值")
}

Atur cara di atas Hasil pelaksanaan ialah:

rreeee