Giới thiệu

Elixir là ngôn ngữ phía chức năng được cải tiến và phát triển trên căn cơ Erlang. Chính vị điều khiển xe trên Erlang Virtual Machine đề xuất Elixir tất cả công suất cực kì cao. Các vận dụng được cải cách và phát triển bằng Elixir có thể chạy hàng trăm ngàn process chỉ bên trên cùng một VPS, tận dụng tối đa về tối nhiều ưu nỗ lực của phần cứng máy vi tính. Tuy nhiên Elixir lại sở hữu cú pháp dể gọi với dể đọc rộng các so với Erlang. hầu hết tín đồ cho rằng, Elixir là "Ruby for Erlang". Cộng đồng Ruby bên trên quả đât đang gửi dần dần sự chú ý quý phái ngữ điệu này. Vậy nó gồm gì hot? Chúng ta thuộc tò mò nào!

Cách mua đặt

OSX

Việc thiết lập siêu đơn giản và dễ dàng Lúc thực hiện Homebrew:

~ brew update~ brew install erlang~ brew install elixirLúc setup thành công, bạn có thể chạy chiếc lệnh bên dưới để kiểm tra:

~ elixir -v> Elixir 1.0.2UbuntuThêm Erlang Solutions repo:wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && subởi vì dpkg -i erlang-solutions_1.0_all.debChạy:subởi vì apt-get updateCài Erlang cùng các platforms đề nghị thiết:suvị apt-get install esl-erlangCài Elixir:subởi apt-get install elixirVới những hệ điều hành khácBạn rất có thể tham khảo thêm trên phía trên.

Bạn đang xem: Tìm hiểu ngôn ngữ elixir

Cơ bạn dạng về Elixir

Tương từ như irb của Ruby, Elixir hỗ trợ mang đến chúng ta 1 cỗ REPL iex

> iexBiến:iex(1)> name = "rbin"#=> "rbin"AtomsTrong Elixir, mỗi Atom là một trong những hằng số nhưng thương hiệu cũng đó là cực hiếm của chính nó.

iex(2)> :this_is_an_atom#=> :this_is_an_atomiex(3)> :my_atom == :atom#=> falseTuples:Chúng ta dùng cặp ngoặc nhọn để định nghĩa Tuples. Trong Elixir, Tuples được lưu giữ trực tiếp trong bộ lưu trữ, thiết yếu vậy, Lúc đem kích cỡ của Tuple hay truy vấn các phần tử của chính nó rất nhanh khô, mặc dù Việc cập nhật hay thêm thành phần hưởng thụ yêu cầu copy toàn bộ tuple vào bộ lưu trữ.

iex(4)> tuple = :hello, "world"#=> :hello, "world"iex(5)> elem(tuple, 1)#=> "world"Lists:List cũng đc lưu vào bộ nhớ, có thể chèn hoặc nối thêm những phần tử:

iex(8)> các mục = <1, 2, :atom>#=> <1, 2, :atom>iex(9)> <"string"> ++ list#=> <"string", 1, 2, :atom>iex(10)> list ++ <31>#=> <1, 2, :atom, 31>Có những hàm rất có ích Khi thao tác làm việc với danh sách, bao gồm cả câu hỏi lấy "Head và Tail":

iex(11)> hd(list)#=> 1iex(12)> tl(list)#=> <2, :atom>Anonymous FunctionsTrong Elixir, ta có thể truyền funtions như những đối số cho các fuctions không giống. Ở bên dưới, bọn họ quan niệm 1 biến add cất 1 function, sau đó truyền nó như một đối số mang lại is_function.

Xem thêm: Tra Từ: Hảo Hán Là Gì ? Hảo Hán Thường Có Câu Hỏi, Tại Sao

iex(14)> add = fn a, b -> a + b end#Functioniex(15)> add.(13, 31)#=> 44iex(16)> is_function(add)#=> true

Tổ chức projects cùng với Mix

Mix là 1 dụng cụ siêu hữu ích được cho phép bọn họ tiện lợi tạo nên, tổ chức, biên dịch với kiểm tra project.Để khởi tạo ra 1 project new với Mix, chỉ cần chạy lệnh đối kháng giản:

mix new myphầm mềm --module MyAppLệnh này sẽ tạo 1 thỏng mục bắt đầu thương hiệu myphầm mềm cùng với vài ba files bên trong. Đồng thời cũng quan niệm 1 module MyApp vào lib/myapp.ex.

* creating README.md* creating .gitignore* creating set.exs* creating config* creating config/config.exs* creating lib* creating lib/myphầm mềm.ex* creating test* creating test/test_helper.exs* creating test/myapp_demo.exsYour set project was created successfully.You can use mix khổng lồ compile it, test it, & more:cd myappmix testChúng ta đã bao gồm các tệp tin cần thiết mang lại cấu trúc 1 dự án cơ bản.File phối.exs là file cất những config chính của dự án, với cai quản những gói phụ thuộc vào. Chúng ta tất cả test/folder, rất có thể viết chạy thử nlỗi Ruby

*
, chúng ta cũng có thể có lib/folder chứa source files của dự án.Nếu chạy mix kiểm tra, ta được kết quả như bên dưới:

$ phối testCompiled lib/myứng dụng.exGenerated mytiện ích.app.Finished in 0.04 seconds (0.04s on load, 0.00s on tests)1 tests, 0 failuresRandomized with seed 543313

Concurrency

Cũng y như Erlang, Elixir áp dụng "Actor" Model đến bài toán truy cập đồng thời(cách xử trí các task thuộc lúc). Toàn cỗ code chạy trong các Process, và phần lớn processes này tự do với nhau.Mỗi process sẽ được indentify thông qua PID

iex(1)> spawn(fn -> IO.puts 1 + 1 end)#=> 2#PIDCác process đang giao tiếp với nhau thông qua sending và receiving message

iex> skết thúc self(), :hello, "world":hello, "world"iex> receive vày...> :hello, msg -> msg...> :world, msg -> "won"t match"...> end"world"Việc return lại PID cực kỳ hữu ích, ta có thể gán nó vào phát triển thành cùng sử dụng nó để nhắn tin đến những process. Trước Lúc có tác dụng điều đó, ta yêu cầu tạo ra 1 receive sầu để nhận tin nhắn chúng ta gửi.

defmodule Geometry do def area_loop bởi vì receive sầu do :rectangle, w, h -> IO.puts("Area = #w * h") area_loop() :circle, r -> IO.puts("Area = #3.14 * r * r") area_loop() kết thúc endendSau đó, tạo thành 1 process, gán nó mang lại pid

pid = spawn(fn -> Geometry.area_loop() end)#=> #PIDTa rất có thể gửi messages đến pid trên, kết quả dìm đc tùy nằm trong vào atom gửi kèm:

send pid, :rectangle, 2, 3#=> Area = 6# :rectangle,2,3skết thúc pid, :circle, 2#=> Area = 12.56000000000000049738# :circle,2Dường như, ta rất có thể khám nghiệm xem process làm sao đang chạy bằng cách sử dụng function Process.alive?.

Process.alive?(pid)#=> false

Kết luận

Elixir có không ít kỹ năng hoàn hảo nhất, phần đa điều liệt kê ngơi nghỉ trên chỉ nên sản phẩm công nghệ cơ phiên bản lúc đầu. Bạn hiểu trường hợp tất cả hứng trúc rất có thể tò mò sâu hơn về ngôn ngữ này.Dưới đó là phần nhiều thế mạnh ho của Elixir:

Là một ngôn ngữ dễ học tập, cú pháp tương tự như Ruby, và cũng tựa tương tự như Erlang.Cộng đồng cung ứng lớnMô hình chạy đa tác vụ bạo phổi mẽMix ngon ko thể ngon hơnTài liệu vừa đủ chả thiếu sản phẩm công nghệ gìTương lai rộng mở

Tđắm say khảo