İksir - Modüller

Elixir'de birkaç işlevi modüller halinde gruplandırıyoruz. Önceki bölümlerde String modülü, Bitwise modülü, Tuple modülü gibi farklı modülleri zaten kullandık.

Elixir'de kendi modüllerimizi oluşturmak için, defmodulemakro. Kullanıyoruzdef bu modüldeki işlevleri tanımlamak için makro -

defmodule Math do
   def sum(a, b) do
      a + b
   end
end

Aşağıdaki bölümlerde, örneklerimizin boyutu uzayacak ve hepsini kabukta yazmak zor olabilir. Elixir kodunu nasıl derleyeceğimizi ve ayrıca Elixir komut dosyalarını nasıl çalıştıracağımızı öğrenmemiz gerekiyor.

Derleme

Modülleri, derlenebilmeleri ve yeniden kullanılabilmeleri için dosyalara yazmak her zaman uygundur. Aşağıdaki içeriğe sahip math.ex adında bir dosyamız olduğunu varsayalım -

defmodule Math do
   def sum(a, b) do
      a + b
   end
end

Dosyaları şu komutu kullanarak derleyebiliriz -elixirc :

$ elixirc math.ex

Bu, adlı bir dosya oluşturacaktır. Elixir.Math.beamtanımlı modül için bayt kodunu içerir. Başlarsakiexyine, modül tanımımız mevcut olacaktır (iex'in bayt kodu dosyasının bulunduğu dizinde başlatılması koşuluyla). Örneğin,

IO.puts(Math.sum(1, 2))

Yukarıdaki program aşağıdaki sonucu üretecektir -

3

Komut Dosyası Modu

Elixir dosya uzantısına ek olarak .exElixir ayrıca şunları da destekler: .exskomut dosyası oluşturma dosyaları. Elixir her iki dosyayı da tamamen aynı şekilde ele alır, tek fark amaçtır..ex .exs dosyaları için kullanılırken dosyaların derlenmesi amaçlanmıştır scripting. Yürütüldüğünde, her iki uzantı da modüllerini derler ve belleğe yükler..ex dosyalar bayt kodlarını diske .beam dosyaları biçiminde yazar.

Örneğin, Math.sum aynı dosyada .ex'leri şu şekilde kullanabiliriz -

Math.exs

defmodule Math do
   def sum(a, b) do
      a + b
   end
end
IO.puts(Math.sum(1, 2))

Elixir komutunu kullanarak çalıştırabiliriz -

$ elixir math.exs

Yukarıdaki program aşağıdaki sonucu üretecektir -

3

Dosya bellekte derlenecek ve sonuç olarak “3” yazdırılarak yürütülecektir. Bayt kodu dosyası oluşturulmayacaktır.

Modül Yerleştirme

Modüller Elixir'e yerleştirilebilir. Dilin bu özelliği, kodumuzu daha iyi bir şekilde düzenlememize yardımcı olur. İç içe modüller oluşturmak için aşağıdaki sözdizimini kullanıyoruz -

defmodule Foo do
   #Foo module code here
   defmodule Bar do
      #Bar module code here
   end
end

Yukarıda verilen örnek iki modülü tanımlayacaktır: Foo ve Foo.Bar. İkincisine şu şekilde erişilebilir:Bar içeride Fooaynı sözlü kapsamda oldukları sürece. Daha sonraBar modül, Foo modül tanımının dışına taşınırsa, tam adıyla (Foo.Bar) başvurulmalıdır veya takma ad bölümünde açıklanan takma ad yönergesi kullanılarak bir takma ad ayarlanmalıdır.

Note- Elixir'de, dil tüm modül adlarını atomlara çevirdiğinden, Foo.Bar modülünü tanımlamak için Foo modülünü tanımlamaya gerek yoktur. Zincirde herhangi bir modül tanımlamadan arbitrarilynested modülleri tanımlayabilirsiniz. Örneğin, tanımlayabilirsinizFoo.Bar.Baz tanımlamadan Foo veya Foo.Bar.