Ahhoz, hogy egy projekten belül kódot ossz meg különböző Elixir-modulok között, a külső modulra a teljes nevével kell hivatkoznod. De mi van, ha ez a név túl hosszú vagy zavaró?
Az alias speciális forma lehetővé teszi, hogy lerövidítsd vagy megváltoztasd azt a nevet, amellyel egy külső modulra hivatkozol. Ha argumentumok nélkül használod, a modulnevet az utolsó szegmensére rövidíti, például a MyApp.Logger.Settings névből Settings lesz. Egyéni nevet a :as opcióval adhatsz meg.
Az aliasokat általában a moduldefiníció elején adod hozzá.
defmodule Square do
alias Integer, as: I
def area(a), do: I.pow(a, 2)
end
Az import speciális forma lehetővé teszi, hogy egy külső modul függvényeit a modul nevének említése nélkül használd.
Egy teljes külső modul importálása ütközéseket okozhat a meglévő helyi függvényekkel. Ennek elkerülésére két opció áll rendelkezésre: az :except és az :only. Mindkettő egy kulcsszólistát vár, amelyben a kulcs a függvény neve, az érték pedig a függvény aritása.
Az importokat általában a moduldefiníció elején adod hozzá.
defmodule Square do
import Integer, only: [pow: 2]
def area(a), do: pow(a, 2)
end
A nemrég vásárolt távirányítós autódból egész új hobbi lett. Távirányítós autóversenyeket szervezel.
Majdnem kész voltál egy programmal, amivel versenyszimulációkat lehet futtatni, amikor a macskád ráugrott a billentyűzetre, és törölt néhány sornyi kódot. Most a programod már nem fordul le...
Race.__struct__/0 is undefined fordítási hibátAdj hozzá egy aliast, hogy a NeedForSpeed.Race modulra a rövidebb Race néven is hivatkozhass.
Car.__struct__/0 is undefined fordítási hibátAdj hozzá egy aliast, hogy a NeedForSpeed.RemoteControlCar modulra a rövidebb Car néven is hivatkozhass.
undefined function puts/1 fordítási hibátA puts/1 függvény az IO modulból származik. Importáld, hogy a modulra való hivatkozás nélkül is használhasd.
undefined function default_color/0 fordítási hibátA default_color/0, red/0, cyan/0 és green/0 függvény mind az IO.ANSI modulból származik. Szeretnéd más autószínek támogatását is hozzáadni, ezért az egész modult importálni akarod. Sajnos az IO.ANSI modul color/1 függvénye ütközik az egyik helyi függvényeddel. Az egész IO.ANSI modult importáld, kivéve azt az egy függvényt.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elixir nyelvet 58 fogalom168 feladat segítségével, valódi emberi mentorálással, mindez ingyen.