Khóa học
Lưu ý: Hướng dẫn này là phần tiếp theo của loạt bài Hướng dẫn Scala. Nếu bạn chưa đọc Hướng dẫn nhập môn Scala và IF ELSE trong Scala, hãy xem qua trước.
Giới thiệu
Toán tử là một ký hiệu hoặc hàm biểu thị một phép toán được thực hiện với một hoặc nhiều toán hạng. Có nhiều loại toán tử khác nhau, còn toán hạng có thể hiểu là một biến. Toán tử là nền tảng của mọi ngôn ngữ lập trình. Chúng cho phép thực hiện nhiều kiểu thao tác trên các toán hạng. Toán tử hướng dẫn trình biên dịch thực hiện các phép như toán học (số học), logic, gán, v.v., và cuối cùng xuất ra kết quả.
Có nhiều loại toán tử được dùng trong nhiều ngôn ngữ lập trình cũng như trong Scala, bao gồm:
- Toán tử quan hệ
- Toán tử số học
- Toán tử gán
- Toán tử logic
- Toán tử bit
Bạn sẽ học về các toán tử trên cả về lý thuyết lẫn cách dùng trong mã.
Toán tử quan hệ
Toán tử quan hệ chủ yếu dùng để so sánh giữa hai hoặc nhiều biến. Nếu bạn đã đọc hướng dẫn IF ELSE trong Scala thì bạn hẳn đã thấy mình tận dụng sức mạnh của toán tử quan hệ trong các điều kiện IF ELSE.
Các toán tử quan hệ này trả về một giá trị boolean, tức là True hoặc False.
Sau đây là các ký hiệu toán tử quan hệ mà bạn dùng để áp dụng lên các biến (Nguồn: Operators in Scala):
-
Bằng (==):Kiểm tra hai biến hoặc toán hạng có bằng nhau hay không. Nếu có, trả về true; nếu không, trả về false. -
Khác (!=):Đối nghịch với toán tửbằng, hay có thể coi là phần bù boolean của toán tửbằng. Kiểm tra hai toán hạng có bằng nhau hay không. Nếu không, trả về true; nếu có, trả về false. -
Lớn hơn (>):Kiểm tra toán hạng thứ nhất có lớn hơn toán hạng thứ hai hay không. Nếu có, trả về true; nếu không, trả về false. -
Nhỏ hơn (<):Đối nghịch với toán tửlớn hơnvì nó kiểm tra toán hạng thứ nhất có nhỏ hơn toán hạng thứ hai hay không. Nếu đúng, trả về true; nếu không, trả về false. -
Lớn hơn hoặc bằng (>=):Kiểm tra toán hạng thứ nhất có lớn hơn hoặc bằng toán hạng thứ hai hay không. Nếu có, trả về true; ngược lại trả về false. -
Nhỏ hơn hoặc bằng (<=):Đối nghịch với toán tửlớn hơn hoặc bằng. Kiểm tra toán hạng thứ nhất có nhỏ hơn hoặc bằng toán hạng thứ hai hay không. Nếu đúng, trả về true; ngược lại trả về false.
Bây giờ hãy hiểu các toán tử quan hệ thông qua một đoạn mã.

Để chạy đoạn mã trên, bạn chỉ cần gõ scala relation_op.scala và bạn sẽ thấy kết quả như dưới đây.

Tiếp theo, bạn sẽ học về toán tử logic.
Toán tử logic
Chúng thường được dùng trong các câu lệnh điều kiện như IF ELSE hoặc trong vòng lặp while. Chúng kết hợp hai hay nhiều điều kiện hoặc tạo phần bù cho kết quả của điều kiện gốc được xét. (Nguồn: Operators in Scala)
-
AND logic:Trả về true khi cả hai điều kiện đều thỏa mãn. Ngược lại trả về false. Dùng từ “and” có tác dụng tương đương toán tử &&. -
OR logic:Trả về true khi một (hoặc cả hai) điều kiện được thỏa mãn. Ngược lại trả về false. Dùng từ “or” có tác dụng tương đương toán tử ||. -
NOT logic:Trả về true nếu điều kiện đang xét không được thỏa mãn. Ngược lại trả về false. Dùng từ “not” thay thế cho toán tử !.


Toán tử số học (Toán học)
Đúng như tên gọi, toán tử số học dùng để thực hiện các phép toán giữa các toán hạng.
Sau đây là các toán tử số học thường dùng trong Scala (Nguồn: Operators in Scala):
-
Cộng:Cộng $(+)$ hai biến/toán hạng. -
Trừ:Trừ $(-)$ hai toán hạng. -
Nhân:Nhân $(\times)$ hai toán hạng. -
Chia:Chia $(/)$ toán hạng thứ nhất cho toán hạng thứ hai. -
Lũy thừa:Trả về giá trị lũy thừa của các toán hạng. Cụ thể là khi một toán hạng được nâng lên lũy thừa của toán hạng thứ hai $(x^y)$ hoặc $(x**y)$. -
Chia lấy dư:Khi toán hạng thứ nhất chia cho toán hạng thứ hai, phần còn lại hay số dư được gọi là phần dư (modulo) (%).
Hãy viết nhanh một đoạn mã nhỏ và phân tích kết quả.
Trong ví dụ này, bạn sẽ dùng list thay vì chỉ định nghĩa biến. Khác với biến, một List có thể chứa n giá trị với nhiều kiểu dữ liệu; chúng biểu diễn danh sách liên kết trong Scala và là bất biến. Bạn sẽ thực hiện các phép toán số học trên hai list thay vì hai biến.


Toán tử gán
Để gán giá trị cho một biến, ta dùng toán tử gán. Để thực hiện điều này, toán hạng bên phải được coi là giá trị, còn toán hạng bên trái thường là biến nhận giá trị được gán. Giá trị có thể có các kiểu dữ liệu khác nhau như int, float, v.v. Kiểu dữ liệu của cả biến và giá trị phải giống nhau, nếu không trình biên dịch sẽ báo lỗi. (Nguồn: Operators in Scala)
-
Gán đơn:Dùng để gán một giá trị cho biến $(=)$. -
Cộng và gán:Dùng để cộng toán hạng trái với toán hạng phải rồi gán kết quả cho biến bên trái $(+=)$. -
Trừ và gán:Tương tựCộng và gán. Dùng để trừ toán hạng trái với toán hạng phải rồi gán cho biến bên trái $(-=)$. -
Nhân và gán:Dùng để nhân toán hạng trái với toán hạng phải rồi gán cho biến bên trái $(\times =)$. -
Chia và gán:Dùng để chia toán hạng trái cho toán hạng phải rồi gán giá trị cho biến bên trái $(/=)$.
Tương tự, còn nhiều toán tử gán khác. Cuối cùng, hãy viết một đoạn mã để hiểu cách chúng hoạt động trong thực tế.


Kết luận
Chúc mừng bạn đã hoàn thành hướng dẫn về Scala này.
Nếu bạn đã đọc hai hướng dẫn trước đó, bạn hiện đã bao quát ba chủ đề khác nhau trong Scala. Một bài tập hữu ích là tận dụng kỹ năng từ cả ba để viết một chương trình Scala từ đầu. Điều này không chỉ giúp bạn tự tin hơn mà còn giúp bạn dễ dàng theo kịp các chủ đề nâng cao hơn trong Scala.
Tài liệu tham khảo:
Vui lòng đặt câu hỏi liên quan đến hướng dẫn này trong phần bình luận bên dưới.