Elixir - Aliran

Banyak fungsi mengharapkan enumerable dan mengembalikan a listkembali. Artinya, saat melakukan beberapa operasi dengan Enum, setiap operasi akan menghasilkan daftar perantara hingga kami mencapai hasilnya.

Stream mendukung operasi malas, bukan operasi bersemangat oleh enum. Pendeknya,streams are lazy, composable enumerables. Artinya, Stream tidak melakukan operasi kecuali jika benar-benar diperlukan. Mari kita pertimbangkan contoh untuk memahami ini -

odd? = &(rem(&1, 2) != 0)
res = 1..100_000 |> Stream.map(&(&1 * 3)) |> Stream.filter(odd?) |> Enum.sum
IO.puts(res)

Ketika program di atas dijalankan, menghasilkan hasil sebagai berikut -

7500000000

Dalam contoh yang diberikan di atas, 1..100_000 |> Stream.map(&(&1 * 3))mengembalikan tipe data, aliran aktual, yang merepresentasikan perhitungan peta pada rentang 1..100_000. Representasi ini belum dievaluasi. Alih-alih membuat daftar perantara, aliran membangun serangkaian komputasi yang dipanggil hanya ketika kita meneruskan aliran yang mendasari ke modul Enum. Aliran berguna saat bekerja dengan koleksi yang besar, mungkin tak terbatas.

Stream dan enum memiliki banyak fungsi yang sama. Stream terutama menyediakan fungsi yang sama yang disediakan oleh modul Enum yang menghasilkan List sebagai nilai kembaliannya setelah melakukan komputasi pada enumerable input. Beberapa dari mereka tercantum dalam tabel berikut -

Sr.No. Fungsi dan Deskripsi nya
1

chunk(enum, n, step, leftover \\ nil)

Mengalirkan enumerable dalam potongan, masing-masing berisi n item, di mana setiap chunk baru memulai langkah elemen ke dalam enumerable.

2

concat(enumerables)

Membuat aliran yang menghitung setiap enumerable dalam satu enumerable.

3

each(enum, fun)

Jalankan fungsi yang diberikan untuk setiap item.

4

filter(enum, fun)

Membuat aliran yang menyaring elemen sesuai dengan fungsi yang diberikan pada pencacahan.

5

map(enum, fun)

Membuat aliran yang akan menerapkan fungsi yang diberikan pada pencacahan.

6

drop(enum, n)

Dengan malas membuang n item berikutnya dari enumerable.