Temeller
Temel veri tipleri ve temel operasyonlar ile başlayalım.
Başlarken
Elixir Kurulumu
Her işletim sistemi için uygun kurulum talimatlarını elixir-lang.org sitesinde Elixir Kurulumu bulabilirsiniz.
Elixir yüklendikten sonra aşağıdaki komut ile kolayca kurulu sürümü doğrulayabilirsiniz.
% 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 }}
Etkileşimli (İnteraktif) Modu Deneyelim
Elixir iex
isimli, Elixir ifadelerini kolayca çalıştırmanız için etkileşimli (interaktif) bir kabuk ile birlikte gelir.
iex
komutunu çalıştıralım:
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>
Birkaç basit ifade yazmayı deneyelim:
iex> 2+3
5
iex> 2+3 == 5
true
iex> String.length("The quick brown fox jumps over the lazy dog")
43
Henüz birşey anlamadıysanız endişe etmeyin, ama umarım bir fikir edinmişsinizdir.
Temel Veri Tipleri
Tam Sayılar (Integers)
iex> 255
255
Binary, octal, and hexadecimal sayı desteği dahili olarak gelmektedir:
iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31
Ondalıklı Sayılar (Floats)
Elixir de ondaklı sayılarda en az bir rakamdan sonra ondalıklı sayı gelmelidir. Toplamda 64 bit tutulan çifte duyarlı (double precision) sayılarını destekler:
iex> 3.14
3.14
iex> .14
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10
Mantıksal Tipler (Booleans)
Elixir de mantıksal true
ve false
değerleri bulunur; false
ve nil
dışında herşey true olarak kabul edilir:
iex> true
true
iex> false
false
Atomlar
Bir atom, değeri adı olan bir sabittir. Eğer Ruby’e aşina iseniz sembollere benzer:
iex> :foo
:foo
iex> :foo == :bar
false
Mantıksal true
ve false
değerleri aynı zamanda atom olarak sırasıyla :true
ve :false
olarak ifade edilir.
iex> is_atom(true)
true
iex> is_boolean(:true)
true
iex> :true === true
true
Modül isimleri aynı zamanda Elixir içerisinde birer atomdur. MyApp.MyModule
geçerli bir atomdur. Hatta böyle bir modül henüz beyan edilmemişse bile.
iex> is_atom(MyApp.MyModule)
true
Atomlar aynı zamanda Erlang kütüphanelerine erişmek için de kullanılır.
iex> :crypto.strong_rand_bytes 3
<<23, 104, 108>>
Stringler
Elixir içinde stringler UTF-8 olarak kodlanmış ve çift tırnak ile çevrelenmiştir:
iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"
Stringler line-break ve escape karakteri destekler:
iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"
Elixir aynı zamanda karmaşık veri tipleri içerir. Koleksiyonlar ve Fonksiyonları öğrendiğimiz zaman bu konuda daha çok şey öğreneceğiz:
Temel Operasyonlar
Aritmatik
Elixir +
-
,*
ve /
olarak beklediğimiz temel operatörleri destekler. Önemli bir not, /
operatörü her zaman ondalıklı tipinde döner:
iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0
Eğer tamsayılarda bölme veya kalan bulma işlemleri yapmak gerekiyorsa, Elixir bunun için iki yardımcı fonksiyon ile birlikte gelmektedir:
iex> div(10, 5)
2
iex> rem(10, 3)
1
Mantıksal Operatörler (Boolean)
Elixir ||
, &&
, ve !
mantıksal operatörleri sağlar. Bunlar her tipi destekler:
iex> -20 || true
-20
iex> false || 42
42
iex> 42 && true
true
iex> 42 && nil
nil
iex> !42
false
iex> !false
true
İlk argümanı mutlaka mantıksal değer (true
yada false
) olması gereken 3 ek operatör bulunmaktadır:
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
Karşılaştırmalar
Elixir birçok karşılaştırma operatörü ile birlikte gelir: ==
, !=
, ===
, !==
, <=
, >=
, <
ve >
.
iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true
Tamsayı ve ondalıklı sayılarıda kesin tip karşılaştırmalar için ===
operatörü kullanılabilir:
iex> 2 == 2.0
true
iex> 2 === 2.0
false
Elixir’in önemli bir özelliği de, iki değişken tipini karşılaştırabiliyor olmasıdır. Sıralama işlemleri için kolaylık sağlar. Aşağıdaki sıralamayı ezberlemek gerekmez ama bunun farkında olmakta yarar vardır:
number < atom < reference < function < port < pid < tuple < map < list < bitstring
Tüm bunlar başka dillerde bulamayacağınız, ilginç fakat tamamen geçerli bir sonuca yol açar:
iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false
Stringlere Şablonları (Interpolation)
Eğer siz Ruby kullandıysanız, string şablonları (interpolation) Elixirin yöntemi tanıdık gelecektir:
iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"
Stringleri Birbirine Ekleme (Concatenation)
Stringler birbirine <>
operatoru kullanılarak bağlanabilir:
iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!