BẮT ĐẦU
KIỂU DỮ LIỆU
TOÁN TỬ
NÂNG CAO
INTERVIEW
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Các toán tử trong Ruby

Trong bài này chúng ta sẽ tìm hiểu các toán tử trong Ruby như: toán tử toán học - toán tử gán - toán tử so sánh ... tất cả đều rất quan trọng vì nó giúp ta xây dựng được các ứng dụng theo yêu cầu của khách hàng.

Nói đến toán tử thì dù bạn học ngôn ngữ nào đi nữa thì việc hiểu rõ các toán tử sẽ giúp bạn sử dụng hợp lý hơn, biết sử dụng toán tử trong trường hợp nào là tốt nhất. Sau đây là danh sách các toán tử thường gặp trong Ruby.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Toán tử là gì ?

Trong khi làm việc với các ngôn ngữ lập trình thì việc chúng ta sử dụng các operator - toán tử là rất nhiều. Để có thể giúp các bạn có thể biết về các operators này trong Ruby thì ở bài viết này mình sẽ giới thiệu với các bạn để chúng ta có thể hiểu hơn về nó, từ đó mà việc tiếp xúc với nó đơn giản hơn trong quá trình làm việc.

Operators là những cái ký tự đại diện cho các toán tử, ví dụ như + (cộng) hoặc là * (trừ) dược sử dụng trong việc tính toán chả hạn.

Ngoài ra chúng ta còn có các toán tử liên quan đến so sánh cũng như liên quan đến logic mình sẽ nói ở bài tiếp theo

Giả sử như ví dụ này chúng ta đã sử dụng các toán tử như so sánh cũng như toán tử số học.

2 * Math.sqrt(2) < limit

2. Toán tử số học trong Ruby

Để bắt đầu tìm hiểu các operators trong Ruby thì phần đầu tiên mình sẽ giới thiệu về Arithmetical operators, toán tử số học. Chúng ta có các toán tử số học sau

  • + (cộng)
  • - (trừ)
  • * (nhân)
  • / (chia)
  • ** (lũy thừa)
  • % (chia lấy dư)
Operator Mô tả
+ Toán tử cộng
- Toán tử trừ
* Toán tử nhân
/ Toán tử chia
% Toán tử chia lấy dư
** Toán tử lũy thừa

Để hiểu hơn mình sẽ có các ví dụ về các toán tử này

a=10
b=20

puts "Toán tử cộng : #{a+b}"
puts "Toán tử trừ : #{a-b}"
puts "Toán tử nhân : #{a*b}"
puts "Toán tử chia : #{a/b}"
puts "Toán tử chia lấy dư: #{a/b}"
puts "Toán tử lũy thừa : #{a**b}"

Kết quả

Toán tử cộng : 30
Toán tử trừ : -10
Toán tử nhân : 200
Toán tử chia : 0
Toán tử chia lấy dư : 10
Toán tử lũy thừa : 100000000000000000000

Ở trong Ruby ngoài chúng ta có thể tính toán giữa hai số ra thì chúng ta cũng có thể cộng 2 String lại với nhau, người ta thường dùng toán tử + (cộng) để nói hai chuỗi lại với nhau

"a" + "b"
=> "ab"

Chúng ta không thể lấy kiểu số cũng với kiểu chuỗi nhé, không sẽ lỗi ngay chương trình

Để có thể cộng được chúng ta cần phải convert kiểu dữ liệu số sang chuỗi bằng cách sử dụng phương thức to_s.

1.to_s + "a"
=> "1a"

Ngoài ra chúng ta cũng có thể sử dụng toán tử cộng để nối hai mảng lại với nhau

[1, 2] + [3, 4]
=> [1, 2, 3, 4]

Có một sự khá là hay ho đối với toán tử trừ, đó là người ta sẽ dùng toán tử trừ để loại bỏ đi giá trị trùng của mảng này với mảng kia.

[1, 2, 3, 5, 7] - [3, 4, 5, 6]
=> [1, 2, 7]

Lưu ý là nó sẽ chỉ xét duyệt các mảng ở phía trước

Giả sử chúng ta muộn lặp lại 100 câu "Em xin hứa làm bài và học bài đầy đủ" chả hạn, chả nhẽ lại viết 100 câu đó ra. Hay nếu bạn là một dân lập trình thì có thể nghĩ tới vòng lặp. Nhưng đây sẽ là cách mà dân Ruby developer làm

puts "Em xin hứa làm bài và học bài đầy đủ \n" * 100


Em xin hứa làm bài và học bài đầy đủ 
Em xin hứa làm bài và học bài đầy đủ 
Em xin hứa làm bài và học bài đầy đủ 
Em xin hứa làm bài và học bài đầy đủ 
....

Quá nhanh và quá nguy hiểm. Đây là một trong những sức mạnh mà toán tử nhân này mang lại

Ngoài ra chúng ta có thể làm điều này tượng tự với mảng, nó sẽ giúp chúng ta lặp lại các giá trị đã cho vào tiếp trong mảng 1 cách nhanh chóng.

3. Toán tử logic trong Ruby

Logical operators hay các bạn còn có thể gọi với một cái tên khác là Boolean operators.

Nhắc đến boolean có lẽ quen thuộc hơn với chúng ta hơn là từ logical, nghe hơi cao siêu =)) nhưng thật ra chúng chỉ là những tóan tử cơ bản trong lập trình mà chúng ta sẽ và đang thường thấy trohg quá trình làm việc.

Để nói về toán tử này thì chúng ta có 3 loại operators nhưng tương ứng với nó là 2 cách viết

  • and và &&
  • or và ||
  • not và !
Operators Mô tả
and Toán tử AND, nếu hai toán hạng là true kết quả sẽ trả về là true
or Toán tử OR, nếu một trong hai toán hạng true thì kết quả sẽ trả về true, nếu cả hai đều false kết quả là false
not Toán tử NOT, phủ định của các giá trị empty, true, false,..
&& Tương tự toán tử AND
|| Tương tự toán tử OR
! Tương tự toán tử NOT

Ví dụ về logical operators

# And va && 

true and false
=> false
true && false
=> fasle

# OR và ||

true || true
=> true
true || false
=> true
true or true
=> true

# NOT và !

!true
=> false

4. Toán tử gán trong Ruby

Tiếp tục với các toán tử, sau đây mình xin giới thiệu về các Assignment Operators hay còn gọi là toán tử gán

Với toán tử này chúng ta sẽ sử dụng toán tử = để thể hiện

Operators Mô tả
= Đây là toán tử gán giá trị, ví dụ a = 10 là một phép gán
+= Kiểu viết này là kiểu kết hợp giữa toán tử cộng và toán tử gán
-= Kiểu viết này là kiểu kết hợp của toán tử trừ và toán tử gán
*= Kiểu viết này kết hợp giữa toán tử nhân và toán tử gán
/= Kiểu viết này kết hợp giữa toán tử chia và toán tử gán
%= Kiểu viết này kết hợp giữa toán tử chia lấy dư và toán tử gán
**= Kiểu viết này kết hợp giữa toán tử lũy thừa và toán tử gán

Đây là một toán tử gán

a = 10 

Các toán tử số học kết hợp với toán tử gán thực chất vẫn là toán tử gán, đơn giản đây là cách viết tắt của

a +=b tương đương với a = a +b
a -= b tương đương với a = a - b
a *= b tương đương với a = a * b
a /= b tương đương với a = a / b
a %= b tương đương với a = a % b
a **= b tương đương với a = a ** b

5. Toán tử so sánh trong Ruby

Tiếp tục đến với toán tử khác đó là Comparison Operators hay còn gọi là các toán tử so sánh.

Operators Mô tả
== Kiểm tra xem hai toán hạng có bằng nhau hay không, nếu có kết quả trả về true
!= Kiểm tra xem hai toán hạng không bằng nhau, nếu 2 giá trị không bằng nhau thì kết quả là true
> Kiểm tra toán hạng bên trái có lớn hơn toán hạng bên phải không, nếu có kết quả là true
< Kiểm tra toán hạng bên phải có lớn hơn toán hạng bên trái không, nếu không kết quả là false
>= Kiểm tra toán hạng bên trái có lớn hơn hoặc là bằng toán hạng bên phải không, nếu có kết quả là true
<= Kiểm tra toán hạng bên phải có lớn hơn hoặc bằng toán hạng bên trái không, nếu không kết quả là false
<=> Đây là một toán tử so sánh kết hợp, Nếu hai toán hạng bằng nhau thì kết quả trả về 0. Nếu toán hạng thứ nhất mà lớn hơn toán hạng thứ 2 thì kết quả trả về 1, ngược lại trả về -1

Ví dụ về các toán tử so sánh

puts 1 == 1
=> true
puts 2 != 3
=> true
puts 2 > 3
=> false
puts 2 < 3
=> true
puts 2 >= 2
=> true
puts 2 <= 2
=> true
puts 2 <=> 3
=> -1
puts 2 <=> 2
=> 0
puts 2 <=> 1
=> 1

Ngoài ra trong Ruby còn cung cấp thêm cho chúng ta 2 phương thức để so sánh bằng nữa là eql?equal?

eql?: So sánh xem hai giá trị có bằng nhau hay không, giống với toán tử == thế nhưng với eql? sẽ so sánh cả kiểu dữ liệu

puts 1 == 1.0
=> true

# nhưng với eql?

puts 1.eql? 1.0
=> false

equal?: So sánh xem hai giá trị có cùng object_id không

puts "hihi".equal? "hihi"
=> false

Kết quả là false vì object_id của hai string "hihi" này là khác nhau. Thế nhưng nếu bạn so sánh hai kiểu dữ liệu Symbol với nhau thì

puts :hihi.equal? :hihi
=> true

Kết quả lại là true, vì trong Symbol nếu giá trị bằng nhau nó sẽ được gọi lại giá trị đó đã được lưu trong bộ nhớ mà không tạo lại object_id

6. Kết luận

Trong bài này mình đã chia sẻ với các bạn về các toán tử trong Ruby, đây là những phần tuy cơ bản nhưng rât quan trọng là nền tảng để chúng ta học sâu hơn nữa nên các bạn hãy chú ý nhé.

Cùng chuyên mục:

Block trong Ruby

Block trong Ruby

Block là một khối lệnh được đặt trong ...

Iterator trong Ruby

Iterator trong Ruby

Ở bài trước mình có nói với các bạn về việc sử dụng các vòng…

Vòng lặp trong Ruby: Vòng lặp for / while / until / loop

Vòng lặp trong Ruby: Vòng lặp for / while / until / loop

Khi học một ngôn ngữ lập trình thì không thể không tìm hiểu tới một…

Câu lệnh điều kiện trong Ruby

Câu lệnh điều kiện trong Ruby

Trong bài này chúng ta sẽ học các lệnh điều kiện trong Ruby, đây là…

Cách sử dụng Ranges trong Ruby

Cách sử dụng Ranges trong Ruby

Ví dụ bạn cần tạo ra một dãy từ 1 đến 100 thì có thể…

Cách sử dụng Array trong Ruby

Cách sử dụng Array trong Ruby

Đây cũng là một trong những kiểu dữ liệu phổ biến nhất, vì vậy bạn…

Kiểu dữ liệu Symbol trong Ruby

Kiểu dữ liệu Symbol trong Ruby

Symbol giống như một String thế nhưng Symbol là một chuỗi bất biến nghĩa là…

Kiểu dữ liệu Text trong Ruby (còn gọi là chuỗi / string)

Kiểu dữ liệu Text trong Ruby (còn gọi là chuỗi / string)

Kiểu dữ liệu Boolean trong Ruby: True, False và Nil

Kiểu dữ liệu Boolean trong Ruby: True, False và Nil

Boolean là kiểu dữ liệu rất quan trọng, nó được dùng rất nhiều trong những…

Kiểu dữ liệu Hashes trong Ruby: Hiểu từ đơn giản đến phức tạp

Kiểu dữ liệu Hashes trong Ruby: Hiểu từ đơn giản đến phức tạp

Nếu bạn đã từng làm việc với một vài ngôn ngữ khác trước khi mà…

Hiểu về Method Missing trong Ruby

Hiểu về Method Missing trong Ruby

Chắc hẳn với các lập trình viên chúng ta ai cũng có thể đôi lần…

Kiểu dữ liệu Number trong Ruby (Kiểu số Integer, Float, ...)

Kiểu dữ liệu Number trong Ruby (Kiểu số Integer, Float, ...)

Trước tiên, chúng ta cùng nhìn qua một bức ảnh tổng quát phân cấp các…

Ruby là gì? Ai đã sáng tạo ra ngôn ngữ viêm kim cương này?

Ruby là gì? Ai đã sáng tạo ra ngôn ngữ viêm kim cương này?

Từ những năm 2008, thời mà mình còn học đại học thì Ruby là ngôn…

Các loại biến và cách sử dụng Module trong Ruby

Các loại biến và cách sử dụng Module trong Ruby

Bất kì một ngôn ngữ lập trình nào đều có khái niệm biến và ruby…

Cách tạo Method - Class và Object trong Ruby

Cách tạo Method - Class và Object trong Ruby

Trong bài này mình sẽ hướng dẫn các bạn cách tạo hàm, gọi hàm. Cách…

Cú pháp trong Ruby - Chạy Hello World

Cú pháp trong Ruby - Chạy Hello World

Tổng quan về cú pháp trong ruby. Hướng dẫn tạo file và chạy hello world…

Hướng dẫn cài đặt Ruby trên Window, Linux và MacOS

Hướng dẫn cài đặt Ruby trên Window, Linux và MacOS

Hướng dẫn chi tiết cách thiết lập môi trường lập trình Ruby trên hệ điều…

Top