Memulai Dan Menulis Ekspresi Di IEx#
IEx (Interactive Elixir) adalah REPL bawaan Elixir yang memungkinkan kita menjalankan kode secara langsung di terminal. Lewat IEx, kita bisa mengeksplorasi fitur bahasa, membaca dokumentasi, melakukan debugging, dan banyak lagi, semuanya dalam sesi yang interaktif. Karena sudah menjadi bagian dari Elixir, kita tidak perlu menginstal apa pun untuk mulai menggunakannya.
Memulai Sesi IEx dan Mengevaluasi Ekspresi#
Untuk memulai sesi, cukup jalankan perintah iex di terminal:
$ iex Erlang/OTP 26 [erts-14.0] [source] [64-bit] [smp:20:20] [ds:20:20:10]
Interactive Elixir (1.15.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> Di sinilah kita mengetikkan ekspresi ElixirelixirSaat IEx berjalan, ia menampilkan versi runtime dari Erlang dan Elixir. Setelah itu, muncul prompt iex(1)>, tempat kita mengetikkan ekspresi. Angka di dalam tanda kurung menunjukkan urutan evaluasi.
Mari kita coba ekspresi pertama:
iex(1)> 1 + 1 ❶
2 ❷elixirPenjelasan:
- ❶ Kita menuliskan ekspresi
1 + 1 - ❷ IEx mengevaluasi dan mencetak hasilnya, yaitu
2
Di Elixir, hampir semua hal adalah ekspresi yang menghasilkan nilai, termasuk function, if, dan case.
Ekspresi Multi Baris#
IEx juga mendukung penulisan ekspresi dalam beberapa baris:
iex(1)> 2 * ( ❶
...(1)> 3 + 1 ❷
...(1)> ) / 4 ❸
2.0 ❹elixirPenjelasan:
- ❶ Kita mulai menulis ekspresi, tapi belum lengkap karena kurung belum ditutup
- ❷ Prompt
...(1)>menandakan ekspresi masih berlanjut ke baris berikutnya - ❸ Setelah ekspresi lengkap, tekan
Entersekali lagi untuk mengeksekusinya - ❹ IEx mengevaluasi dan mencetak hasilnya, yaitu
2.0
Selama ekspresi belum utuh, IEx akan terus menunggu input berikutnya. Ini sangat membantu saat kita ingin menulis ekspresi panjang dengan lebih rapi dan mudah dibaca.
Membaca Dokumentasi#
IEx menyediakan fitur bantuan yang memungkinkan kita membaca dokumentasi langsung dari dalam shell. Untuk memulainya, kita bisa mengetikkan h:
iex(2)> h
IEx.Helpers
Welcome to Interactive Elixir. You are currently seeing the documentation for
the module IEx.Helpers which provides many helpers to make Elixir's shell more
joyful to work with.
This message was triggered by invoking the helper h(), usually referred to as
h/0 (since it expects 0 arguments).
...... (Dan seterusnya)elixirPerintah ini menampilkan dokumentasi module IEx.Helpers, yang berisi berbagai helper untuk mempermudah eksplorasi di shell Elixir.
Jika kita ingin melihat dokumentasi function tertentu, misalnya IO.puts, kita bisa menggunakan perintah h diikuti dengan nama module dan function:
iex(3)> h IO.puts
def puts(device \\ :stdio, item)
@spec puts(device(), chardata() | String.Chars.t()) :: :ok
Writes item to the given device, similar to write/2, but adds a newline at the
end.
By default, the device is the standard output. It returns :ok if it succeeds.
## Examples
IO.puts("Hello World!")
#=> Hello World!
...... (Dan seterusnya)elixirDari sini kita bisa melihat spesifikasi function, penjelasan singkat, nilai yang dikembalikan, dan contoh penggunaannya.
Cara Debug#
Untuk melakukan debug di IEx, salah satu caranya adalah dengan menggunakan function dbg(). Function ini mencetak ekspresi yang sedang dievaluasi beserta hasilnya, yang ditampilkan di sebelah kanan simbol #=>. Ini memudahkan kita menelusuri bagaimana data diproses di setiap langkah.
Berikut contoh sederhananya:
iex(14)> dbg(200 + 20.22)
[iex:14: (file)]
200 + 20.22 #=> 220.22
220.22elixirPada contoh di atas, dbg() mencetak ekspresi 200 + 20.22 beserta hasilnya, yaitu 220.22. Dengan ini, kita bisa langsung melihat evaluasi nilai tersebut.
Fitur ini sangat membantu saat bekerja dengan kode yang lebih panjang, terutama saat menggunakan pipeline, yaitu cara Elixir untuk mengalirkan nilai melalui rangkaian pemanggilan function dengan pipe operator |>. Kita akan membahas pipeline lebih lanjut di bagian tersendiri. Untuk saat ini, kita cukup memahami cara kerja function dbg():
iex(16)> -100 |> div(4) |> abs() |> to_string() |> dbg() ❶
[iex:16: (file)] ❷
100 #=> -100 ❷
|> div(4) #=> -25 ❷
|> abs #=> 25 ❷
|> to_string() #=> "25" ❷
"25" ❸elixirPenjelasannya:
- ❶ Kita mulai dengan menulis sebuah function pipeline. Nilai awalnya adalah
-100, yang dialirkan ke function berikutnya melalui pipe operator|>. Langkah-langkahnya adalah:-100dialirkan ke functiondiv(4), menghasilkan-25-25dialirkan ke functionabs(), menghasilkan2525dialirkan ke functionto_string(), menghasilkan"25"- Terakhir, function
dbg()mencetak hasil di setiap tahap
- ❷ Ini adalah output dari
dbg(), yang menunjukkan hasil evaluasi pada setiap langkah dalam pipeline - ❸ Nilai akhir dari seluruh ekspresi adalah
"25"
Dengan dbg(), kita bisa memantau jalannya eksekusi secara rinci tanpa perlu menambahkan print manual di setiap langkah.
Keluar Dari Sesi IEx Atau Menampilkan Opsi Lainnya#
Cara tercepat untuk keluar dari sesi IEx adalah dengan menekan tombol CTRL+C dua kali. Jika kita hanya menekannya sekali, IEx akan masuk ke kondisi BREAK dan menampilkan sejumlah opsi berikut:
$ iex
Erlang/OTP 27 [erts-15.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads
:1] [jit:ns]
Interactive Elixir (1.17.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
(l)oaded (v)ersion (k)ill (D)b-tables (d)istributionelixirPenjelasan:
- Saat IEx memasuki kondisi BREAK, ia menunggu perintah dari kita.
- Beberapa opsi yang paling umum digunakan:
(a)bort: Keluar dari sesi IEx.(A)bort with dump: Keluar dari sesi IEx sambil menghasilkan dump untuk analisis lebih lanjut.(c)ontinue: Melanjutkan sesi IEx yang sedang berhenti.
Untuk keluar dari IEx, kita bisa menekan CTRL+C dua kali, atau menekan a saat berada di kondisi BREAK.
Karena IEx akan sering kita gunakan selama proses pengembangan, memahami cara mengelola sesi ini dengan lancar adalah langkah awal yang penting untuk meningkatkan produktivitas.
Referensi#
- Saša Jurić. (2024). Elixir In Action (3rd ed.). Manning Publications.
- Elixir. (2024, December 11). IEx [Documentation]. https://hexdocs.pm/iex/IEx.html ↗