06/04/2021, 14:47

Các toán tử trong Ruby - Ruby căn bản

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ẽ ...

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.

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ư)

Để 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"

Để 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]

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 đủ 
" * 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à !

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

Đâ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.

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é.

Tạ Quốc Bảo

23 chủ đề

7270 bài viết

0