Do you want to pick up from where you left of?
Take me there

Cơ bản

Cài đặt, cái kiểu phổ thông và cơ chế hoạt động.

Cài đặt

Cài Elixir

Hướng dẫn cài đặt cho mỗi OS có thể tìm trên trang Elixir-lang.org trong mục Installing Elixir.

Chế độ trực quan (Interactive Mode)

Elixir đi kèm với iex, một shell trực quan, cho phép chúng ta chạy biểu thức Elixir nhập vào.

Để bắt đầu, hãy chạy 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)

Các kiểu phổ thông

Integer (Số nguyên)

iex> 255
255

Có hỗ trợ số nhị phân, bát phân, thập lục phân:

iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31

Float (Số thực dấu phẩy động)

Trong Elixir, số Float được thể hiện bằng một số thập phân đi sau dấu phân số; chúng sẽ có độ chính xác kép 64bit và hỗ trợ e cho số luỹ thừa:

CHÚ THÍCH: Dấu phân số theo hệ toán học Anh là . chứ không phải dấu ,

iex> 3.14 
3.14
iex> .14
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10

Boolean (Luận lý Boole)

Elixir dùng truefalse như luận lý; tất cả mọi thứ đều được xem là thật ngoại trừ falsenil:

iex> true
true
iex> false
false

Atom

Một atom là một biến không thay đổi với tên là giá trị của chúng. Nếu bạn quen Ruby thì chúng giống Symbols:

iex> :foo
:foo
iex> :foo == :bar
false

CHÚ THÍCH: Luận lý truefalse tuần tự là atoms :true:false.

iex> is_atom(true)
true
iex> is_boolean(:true)
true
iex> :true === true
true

String (Chuỗi)

String (chuỗi) trong Elixir được định dạng theo chuẩn UTF-8 và được gói trong dấu ngoặc kép:

iex> "Hello"
"Hello"
iex> "cải cách"
"cải cách"

String cũng hỗ trợ tách ra nhiều dòng và tự động thoát các chuỗi theo trình tự:

iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"

Cơ chế vận hành phổ thông

Toán học

Elixir hỗ trợ các toán tử phổ thông +, -, *, và / như bạn kì vọng. Xin lưu ý rằng / luôn trả về một số Float động:

iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0

Nếu bạn cần chia số nguyên hoặc tìm số thừa, Elixir có 2 hàm hữu dụng để thực hiện:

iex> div(10, 3)
3
iex> rem(10, 3)
1

Boolean (Luận lý Boolean)

Elixir cung cấp luận tử ||, &&, and !, chúng hỗ trợ các kiểu dữ liệu sau:

iex> -20 || true
-20
iex> false || 42
42

iex> 42 && true
true
iex> 42 && nil
nil

iex> !42
false
iex> !false
true

Trong Elixir, khái niệm “tính đúng đắn (truthiness)” rất đơn giản: chỉ có falsenil được coi là sai. Mọi giá trị khác, bao gồm 0, "" (chuỗi rỗng) và [] (danh sách rỗng), đều được coi là đúng. Quy tắc nghiêm ngặt này cho phép các toán tử boolean như ||, &&! hoạt động có thể dự đoán được với bất kỳ kiểu dữ liệu nào cho logic điều kiện.

Có 3 luận tử bổ sung mà đối số phải là một luận lý Boolean (truefalse):

iex> true and 42
42
iex> false or true
true
iex> not false
true
iex> 42 and true
** (BadBooleanError) expected a boolean on left-side of "and", got: 42
iex> not 42
** (ArgumentError) argument error

Lưu ý: andor trong Elixir thực tế ánh xạ tới andalsoorelse trong Erlang.

So sánh

Elixir có hỗ trợ các toán tử so sánh quen thuộc: ==, !=, ===, !==, <=, >=, <>.

iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true

Nếu muốn so sánh có xét đến số thực hay số nguyên, sử dụng ===:

iex> 2 == 2.0
true
iex> 2 === 2.0
false

Một chức năng quan trọng của Elixir là hai kiểu có thể được so sánh với nhau, thực sự rất là hữu dụng cho việc sắp xếp. Chúng ta không cần phải nhớ thứ tự sắp xếp nhưng nên lưu ý:

number < atom < reference < function < port < pid < tuple < map < list < bitstring

Điều này có thể dẫn đến một vài trường hợp so sánh hợp lệ nhưng khá xa lạ so với các ngôn ngữ khác:

iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false

String Interpolation (Chèn chuỗi)

Nếu bạn đã từng sử dụng qua Ruby, cách để chèn vào một chuỗi trong Elixir rất tương tự:

iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"

String Concat (Nối chuỗi)

Dùng <> để nối chuỗi lại với nhau:

iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"

Kết luận

Trong bài học này, chúng ta đã tìm hiểu các khối xây dựng cơ bản của Elixir.

Chúng ta bắt đầu bằng việc cài đặt Elixir và khởi chạy shell tương tác IEx, nơi chúng ta đánh giá các biểu thức đơn giản và thấy kết quả ngay lập tức. Từ đó, chúng ta khám phá các kiểu dữ liệu cốt lõi: số nguyên (bao gồm dạng nhị phân, bát phân và thập lục phân), số thực, boolean, atom và chuỗi.

Chúng ta cũng làm việc với các phép toán cơ bản như số học, logic boolean và toán tử so sánh. Trên đường đi, chúng ta thấy Elixir xử lý tính đúng đắn như thế nào — chỉ falsenil là sai — và các toán tử ||, &&, andor hoạt động khác nhau như thế nào tùy theo kỳ vọng của chúng.

Cuối cùng, chúng ta đã xem xét nội suy chuỗi và nối chuỗi, hai công cụ thiết yếu để làm việc với văn bản.

Những khái niệm này tạo nên nền tảng của việc phát triển Elixir hàng ngày. Hãy dành thời gian để thử nghiệm với chúng trong IEx, thử sửa đổi các ví dụ và quan sát cách ngôn ngữ hoạt động. Hiểu vững chắc những điều cơ bản này sẽ giúp các chủ đề tiếp theo dễ nắm bắt hơn nhiều.

Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!