Dasar
Persiapan, tipe data dasar, dan operasi dasar.
Persiapan
Instalasi Elixir
Instruksi instalasi untuk masing-masing OS dapat dilihat di Elixir-lang.org bagian panduan Installing Elixir.
Setelah Elixir terinstal, kamu dapat dengan mudah melihat versi yang terinstal.
% elixir -v
Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Elixir {{ site.elixir.version }}
Moda Interaktif
Elixir dilengkapi dengan IEx, sebuah shell interaktif, yang memungkinkan kita mencoba perintah Elixir.
Untuk memulai, mari kita jalankan iex
:
Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir ({{ site.elixir.version }}) - press Ctrl+C to exit (type h() ENTER for help) iex>
Catatan: Pada Windows PowerShell, IEx dijalankan dengan mengetik iex.bat
.
Sekarang, mari kita coba menulis beberapa ekpresi sederhana:
iex> 2+3
5
iex> 2+3 == 5
true
iex> String.length("The quick brown fox jumps over the lazy dog")
43
Jangan khawatir bila kamu belum memahami setiap ekspresi yang ada, tetapi kami berharap kamu memahami garis besarnya.
Tipe Data Dasar
Integer
iex> 255
255
Dukungan terhadap bilangan biner, oktal, dan heksadesimal sudah tersedia secara default:
iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31
Float
Dalam Elixir, bilangan tidak bulat (float) membutuhkan sebuah titik desimal setelah setidaknya satu digit; bilangan ini memiliki tingkat presisi 64-bit double precision dan mendukung e
untuk bilangan eksponen:
iex> 3.14
3.14
iex> .14
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10
Boolean
Elixir mendukung true
and false
sebagai nilai boolean (logika); semua nilai dianggap sama dengan true
kecuali false
dan nil
:
iex> true
true
iex> false
false
Atom
Sebuah atom adalah sebuah konstanta dimana nilainya adalah namanya itu sendiri. Jika kamu familiar dengan Ruby, atom merupakan sinonim dari Symbol:
iex> :foo
:foo
iex> :foo == :bar
false
Nilai boolean true
dan false
masing-masing adalah juga atom :true
dan :false
.
iex> is_atom(true)
true
iex> is_boolean(:true)
true
iex> :true === true
true
Nama modul dalam Elixir juga berupa atom. MyApp.MyModule
adalah atom yang sah, walaupun modul tersebut belum dideklarasikan.
iex> is_atom(MyApp.MyModule)
true
Atom juga digunakan untuk mereferensikan modul dari librari erlang, termasuk modul-modul bawaan.
iex> :crypto.strong_rand_bytes 3
<<23, 104, 108>>
String
String dalam Elixir terkodekan dalam UTF-8 dan dituliskan di antara petik ganda (double quotes):
iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"
String mendukung jeda baris (line break) dan escape sequences:
iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"
Elixir juga mendukung banyak tipe data kompleks. Kita akan mempelajari hal-hal tersebut lebih banyak ketika kita belajar tentang Koleksi dan Fungsi.
Operasi Dasar
Aritmetik
Elixir mendukung operator dasar +
, -
, *
, dan /
sebagaimana yang sudah dapat diduga. Perlu diperhatikan bahwa /
akan selalu menghasilkan bilangan dengan tipe data float:
iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0
Jika kamu membutuhkan pembagian dengan hasil bilangan bulat (integer) atau sisa pembagian, Elixir memiliki dua fungsi untuk itu:
iex> div(10, 5)
2
iex> rem(10, 3)
1
Boolean
Elixir menyediakan operator boolean ||
, &&
, dan !
. Operator-operator ini bisa digunakan untuk tipe data apapun:
iex> -20 || true
-20
iex> false || 42
42
iex> 42 && true
true
iex> 42 && nil
nil
iex> !42
false
iex> !false
true
Ada tiga operator tambahan yang argumen pertamanya harus sebuah boolean (true
dan false
):
iex> true and 42
42
iex> false or true
true
iex> not false
true
iex> 42 and true
** (ArgumentError) argument error: 42
iex> not 42
** (ArgumentError) argument error
Perbandingan
Elixir dilengkapi dengan semua operator perbandingan (comparison) yang biasa kita pakai: ==
, !=
, ===
, !==
, <=
, >=
, <
dan >
.
iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true
Untuk perbandingan yang ketat (strict) antara integer dan float gunakan operator ===
:
iex> 2 == 2.0
true
iex> 2 === 2.0
false
Sebuah fitur penting dari Elixir adalah bahwa segala macam tipe dapat dibandingkan; ini berguna dalam pengurutan (sorting). Kita tidak perlu menghafalkan urutannya. Tapi penting untuk dipahami:
number < atom < reference < function < port < pid < tuple < map < list < bitstring
Ini bisa menghasilkan perbandingan yang menarik namun valid, yang mungkin tidak akan kamu temukan di bahasa lain:
iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false
Interpolasi String
Kalau kamu pernah menggunakan Ruby, interpolasi string di Elixir tidak akan terasa asing:
iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"
Perangkaian String
Perangkaian string menggunakan operator <>
:
iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!