Banyak bahasa tampaknya memiliki struktur yang sangat mirip yang disebut iterable atau enumerable. Ini adalah struktur yang dapat diulang atau dicacah, yang bagi saya tampak sangat mirip. Apakah kata-kata ini bersinonim atau ada perbedaan semantik yang halus antara iterable dan enumerable yang membenarkan pilihan istilah?
16
Jawaban:
IMHO ini tergantung pada konteksnya, kadang-kadang mereka sama, kadang tidak. Misalnya, dalam C # Anda memiliki tipe data "IEnumerable", yang mengklasifikasikan iterator, tetapi Anda juga memiliki deklarasi "enum" yang untuk konstanta simbolik, bukan khusus untuk iterasi. Dalam bahasa pemrograman lain (atau konteks lain) situasinya mungkin serupa atau tidak.
Jika Anda memaksudkan dua kata itu hanya sebagai kata kerja bahasa Inggris dan tidak secara khusus sebagai kata kunci bahasa pemrograman, maka
Dan karena iterasi diperlukan untuk enumerasi, dan enumerasi menyiratkan semacam iterasi, kedua deskripsi proses tersebut biasanya dapat dipertukarkan.
sumber
Seperti yang dikatakan orang lain, semantik tepatnya tergantung pada bahasa pemrograman yang menggunakan istilah, jadi saya akan memberikan penilaian linguistik murni.
"Iterable" adalah kata yang agak baru diciptakan, jelas merujuk pada "iterasi" dan "iterator" yang telah dibangun banyak bahasa. Oleh karena itu, jenis-jenis seperti itu hampir pasti mendukung iterator, tetapi belum tentu apa pun yang lain, dan belum tentu apa pun di luar fungsi iterator paling dasar: memproses setiap item satu kali. Membalikkan, menghapus, mengukur jarak, dll. Mungkin didukung atau tidak.
"Enumerable" mengacu pada menghitung hal-hal, yang dapat berarti sama dengan iterasi, tetapi hanya jika bahasa tersebut belum menggunakan "iterable" untuk tujuan itu. Jika suatu bahasa memiliki keduanya, "enumerable" hampir pasti berarti sesuatu yang lain, mungkin sesuatu yang lebih kuat. Kemungkinan besar, itu akan mendukung gagasan menghubungkan setiap elemen dengan indeks numerik yang unik, dan mungkin itu akan memungkinkan akses acak (misalnya mengambil elemen ketiga sebelum yang pertama dan kedua).
Itu tentang semua makna yang dapat Anda simpulkan hanya dari kata-kata. Dalam situasi konkret apa pun, merujuk ke dokumentasi API perpustakaan standar.
sumber
Saya ingin fokus pada definisi ketat kedua istilah tersebut
Iterable
adalah untuk mengulangi hal-hal, dan mendapatkan akses ke elemen satu per satu.Saya pikir istilah
Enumerable
itu berasal dari mesin pemutar. Ini tentang kemampuan untuk membuat daftar elemen satu per satu dalam urutan yang tepat. Hal-hal yang dapat dicantumkan satu per satu haruscountable
, masing-masing memiliki indeks korespondensi yang unik. Diberikan elemen, Anda bisa mendapatkan indeks unik. Diberikan indeks, Anda hanya dapat menemukan satu elemen yang mungkin terkait dengan indeks itu.Dengan kata lain,
Enumerable
menyiratkan kemampuan untuk menghasilkan elemen. Beberapa bahasa pemrograman, misalnya,Haskell
telah menerapkan gagasan ini. Ada kelas tipe Enum , danChar
salah satunya adalah instance.sumber
enumerasi sedang menghitung, iterasi adalah replaying
enumerasi kedua akan menghasilkan angka yang sama, iterasi dapat berupa variasi
fraktal dibangun oleh iterasi dari suatu fungsi, mengulangi fungsi pada hasil iterasi terakhir, setiap iterasi memiliki nilai yang berbeda
sumber