Dan enum seperti DicTestKey Anda (di Swift, ketik nama harus dimulai dengan huruf kapital), Anda dapat menghilangkan bagian penugasan di Swift terbaru
enum DicTestKey: String { case VALUE1 case VALUE2 }Kamus. Kunci harus dapat di-hash, dan semua enum tanpa nilai terkait dapat di-hash
Jadi, Anda dapat mendeklarasikan DicTestKey Anda seperti ini jika Anda mau
enum DicTestKey { case VALUE1 case VALUE2 }_Diposting oleh
Menyalin ke clipboard
Bagikan postingan ini
Disalin ke Papan Klip
Setiap bahasa pemrograman harus menggunakan tipe string. Saat kita mengetik string di program kita, kesalahan ketik biasanya tidak bisa dihindari. Bagaimana kita bisa menghilangkan kesalahan yang mungkin kita buat selama pemrograman?
Pencacahan umumnya digunakan dalam bahasa pemrograman yang paling populer. Tentu saja, Python juga menyediakan Kelas Pencacahan yang fleksibel. Menggunakan pencacahan adalah cara pemrograman yang sangat baik. Ini membantu kita untuk mengikat sekumpulan nama simbolis dengan konstanta unik. Oleh karena itu, kita dapat dengan mudah menggunakannya untuk menghindari beberapa bug runtime yang disebabkan oleh kesalahan ketik
Definisi KhasFoto oleh stepepb di Pixabay
Mari pertimbangkan kasus penggunaan yang sangat sederhana sekarang. Kami memiliki kamus yang terlihat seperti berikut
user = {'name': 'Chris',
'age': 33,
'programming_language': 'Python'
}
Kemudian, kami ingin menguji apakah pengguna menyukai Python, dan mencetak beberapa keluaran berdasarkan hasilnya
if user['programming_language'] == 'Python':print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
OKE. Tidak masalah. Saya pikir itu cukup sederhana sehingga saya tidak perlu menjelaskan kodenya. ) Sekarang, misalkan kita telah membuat salah ketik sebagai berikut. Ini bisa mengakibatkan bug run-time yang akan sulit ditemukan
Bug ini akan menghasilkan hasil — tidak ada yang menyukai Python. Kami tahu itu tidak benar, tentu saja, itu kesalahan. )
Solusi Dasar Menggunakan PencacahanYah, semua orang membuat kesalahan. Bagaimana kita bisa menggunakan pencacahan untuk menghindari kesalahan semacam ini? . Cukup impor kelas if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")_6 dan tentukan anggota enumerasi
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 5
Kemudian, kami mendapat pencacahan dengan anggota tertentu. Kita dapat memasukkannya ke dalam kamus sebagai berikut
user = {'name': 'Chris',
'age': 33,
'programming_language': ProgrammingLanguage.PYTHON
}_
Kalau kita mau uji coba yang setara, bisa seperti ini
if user['programming_language'] == ProgrammingLanguage.PYTHON:print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")
Jadi, apa perbedaan antara menggunakan pencacahan dibandingkan dengan string biasa? . Dengan kata lain, sebagian besar alat IDE akan menyediakan pelengkapan otomatis. Jadi, kecil kemungkinan kita bisa salah ketik
Yang terpenting, juru bahasa Python akan membuat kesalahan jika kami melakukan kesalahan
Oleh karena itu, kode tidak akan dapat memenuhi jika ada salah ketik. Masalah yang terungkap sebelum runtime biasanya bukanlah masalah yang sebenarnya, tetapi merupakan bagian dari pemrograman. )
Akses Anggota PencacahanFoto oleh JESHOOTS-com di Pixabay
Baiklah, jika Anda telah memutuskan untuk menggunakan pencacahan saat diperlukan, saya kira Anda mungkin ingin tahu lebih banyak tentangnya. Senang untuk memperluas topik dalam artikel ini. Pertama-tama mari kita bicara tentang cara mengakses anggota pencacahan
Jika kami hanya mencetak anggota, if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")7 asli akan dicetak, yang tidak memberikan terlalu banyak informasi
Namun, jika kita menggunakan fungsi if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")_8, itu juga akan mencetak nilai anggota
Jika kita ingin mendapatkan nilai integer dari anggota, akses saja atribut if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")9 nya. Untuk kunci anggota, kita dapat menggunakan atributfrom enum import Enumclass ProgrammingLanguage(Enum):
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 50 untuk mengaksesnya
Contoh Kasus Penggunaan Perlu Mengakses Kunci Anggota
Petunjuk penggunaan mengakses kunci anggota adalah bahwa kita dapat memiliki string dari anggota pencacahan untuk penggunaan lebih lanjut. Misalnya, bagaimana jika kamus pengguna dibuang dari dokumen JSON?
'name': 'Chris',
'age': 33,
'programming_language': 'Python'
}
Jadi, kita dapat mengonversi string "Python" menjadi huruf besar dan kemudian membandingkannya dengan kunci anggota pencacahan
if user['programming_language'].upper() == ProgrammingLanguage.PYTHON.name:Anda mungkin bertanya mengapa kita harus menggunakan huruf besar semua untuk kunci anggota. Jawaban singkatnya adalah Anda tidak perlu melakukannya. Namun, disarankan untuk menggunakan semua huruf besar saat kita mendefinisikan "konstanta". Semua anggota dalam pencacahan dianggap konstanta. Merupakan cara yang baik untuk mengikuti standar PEP
Integrasikan dengan Struktur DataFoto oleh fotofan1 di Pixabay
Anda mungkin menyadari bahwa pencacahan cukup terstruktur dan terbatas. Jadi, itu pasti bisa berintegrasi dengan berbagai jenis struktur data. Di sini saya akan menunjukkan dua contoh untuk daftar dan kamus Python
Ubah Pencacahan menjadi Daftar
Kita dapat mengulangi pencacahan menggunakan for loop
for lang in ProgrammingLanguage:print(lang)
Oleh karena itu, kita dapat dengan mudah menggunakan pemahaman daftar untuk mengubahnya menjadi daftar
[lang.name for lang in ProgrammingLanguage]Sebenarnya, ada cara lain untuk melakukan ini. Ini tidak mudah tetapi membantu untuk memahami struktur pencacahan. Artinya, kita bisa menggunakan atribut sihir untuk mendapatkan semua detail anggota
ProgrammingLanguage.__members__Jenis from enum import Enumclass ProgrammingLanguage(Enum):
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 5_1 pada dasarnya adalah kamus hanya-baca. Jadi, kita cukup mendapatkan daftar kunci dengan memanggil fungsi from enum import Enumclass ProgrammingLanguage(Enum):
PYTHON = 1
JAVA = 2
C = 3
JAVASCRIPT = 4
PHP = 52 nya
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")0
Hashable sebagai Kunci Kamus
Anggota enumerasi dapat di-hash, dan itu artinya kita dapat menggunakannya sebagai kunci kamus yang valid
if user['programming_language'] == 'Python':print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")1
Ini akan sangat membantu karena juga dapat mencegah kita membuat kesalahan ketik untuk kunci kamus. Saat kita ingin mendapatkan nilai dari kuncinya di kamus, kita juga akan menggunakan anggota pencacahan
if user['programming_language'] == 'Python':print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")2
Pencacahan dengan Nilai String
Foto oleh StockSnap di Pixabay
Selama ini semua contoh di atas menggunakan bilangan bulat sebagai nilai pencacahannya. Bahkan, kita bisa menggunakan string sebagai nilainya. Ini memberikan lebih banyak fleksibilitas selama penggunaan. Untuk memiliki pencacahan berbasis string, cukup tentukan anggota dengan string
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")_3
Oleh karena itu, kami selalu dapat mengakses nilai string anggota menggunakan atribut if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")9
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")_4
Perlu diperhatikan bahwa kita masih tidak dapat menggunakan anggota pencacahan untuk dibandingkan dengan string, karena jenisnya berbeda. Hasilnya akan selalu salah
Sebaliknya, kita perlu menggunakan nilai anggota
Cara termudah untuk Mendefinisikan Enuermation
Foto oleh InspiredImages di Pixabay
Terakhir, cara paling "Pythonic" untuk mendefinisikan pencacahan bisa jauh lebih mudah. Kami bahkan tidak perlu menulis kelas pencacahan. Kelas if user['programming_language'] == 'Python':
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")_6 memiliki konstruktor yang dapat mengambil dua parameter dan menghasilkan pencacahan
print(f"{user['name']} can use Python!")
else:
print(f"Python is not {user['name']}'s favourite programming language.")5
Pada baris kode di atas, argumen pertama mendefinisikan nama kelas pencacahan. Kemudian, argumen kedua adalah string yang berisi semua kunci anggota yang dipisahkan oleh koma, spasi, atau keduanya
Di sini kami tidak menetapkan setiap anggota dengan bilangan bulat secara eksplisit, anggota akan ditetapkan secara otomatis dengan bilangan bulat inkremental otomatis mulai dari 1
Setelah itu, kita mendapatkan pencacahan yang sama dengan menulis kelas secara eksplisit
Ringkasan
Foto oleh 27707 di Pixabay
Pada artikel ini, saya telah memperkenalkan kelas pencacahan dengan Python. Kita dapat menggunakannya untuk mengikat nama simbolik ke nilai konstanta yang unik. Dengan melakukan itu, kita dapat memanfaatkan fitur pelengkapan otomatis yang tersedia di sebagian besar IDE, serta mencegah kesalahan runtime yang disebabkan oleh kesalahan ketik.
Ada juga beberapa fitur mewah lainnya yang disediakan enumerasi Python, seperti digunakan sebagai kunci kamus. Selain itu, kita dapat menggunakan konstruktor kelas "Enum" untuk dengan mudah mendefinisikan enumerasi tanpa menulis kelas secara eksplisit, bagaimana "Pythonic" itu
Bergabunglah dengan Medium dengan tautan referensi saya — Christopher Tao
Sebagai anggota Medium, sebagian dari biaya keanggotaan Anda diberikan kepada penulis yang Anda baca, dan Anda mendapatkan akses penuh ke setiap cerita…
sedang. com
Jika Anda merasa artikel saya bermanfaat, harap pertimbangkan untuk bergabung dengan Keanggotaan Medium untuk mendukung saya dan ribuan penulis lainnya. (Klik tautan di atas)