Biến và Kiểu Dữ Liệu trong Ruby

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 3 tháng 2, 2025

1. Biến trong Ruby là gì?

Biến (variable) trong Ruby là một tên đại diện cho một giá trị được lưu trong bộ nhớ. Ruby là một ngôn ngữ động, có nghĩa là bạn không cần khai báo kiểu dữ liệu cho biến, mà Ruby sẽ tự động xác định kiểu dựa trên giá trị của nó.

Ví dụ:

name = "Ruby"
age = 25
is_active = true

Trong đoạn code trên:

  • name là một biến có giá trị chuỗi "Ruby".
  • age là một biến có giá trị số 25.
  • is_active là một biến có giá trị true (kiểu Boolean).

2. Quy tắc đặt tên biến trong Ruby

  • Tên biến phải bắt đầu bằng một chữ cái (a-z, A-Z) hoặc dấu gạch dưới (_).
  • Không được bắt đầu bằng số.
  • Phân biệt chữ hoa và chữ thường (name khác Name).
  • Tránh dùng từ khóa của Ruby (vd: class, def, if, while...).

Ví dụ hợp lệ:

user_name = "Alice"
_userAge = 30
number1 = 100

Ví dụ không hợp lệ:

1name = "Bob"    # Sai, không thể bắt đầu bằng số
class = "Ruby"   # Sai, "class" là từ khóa

3. Các loại biến trong Ruby

Ruby có 4 loại biến chính:

Loại biến Ký hiệu Phạm vi
Biến cục bộ name Chỉ có hiệu lực trong một phạm vi nhất định (hàm, block).
Biến toàn cục $global_var Có thể truy cập từ bất kỳ đâu trong chương trình.
Biến instance @instance_var Chỉ có hiệu lực trong một object cụ thể.
Biến class @@class_var Dùng chung cho tất cả instance của class.

Ví dụ:

$global_var = "Tôi là biến toàn cục"

class Demo
  @@class_var = "Tôi là biến class"

  def initialize
    @instance_var = "Tôi là biến instance"
    local_var = "Tôi là biến cục bộ"
    
    puts local_var  # Có thể truy cập được
  end
end

demo = Demo.new
puts $global_var  # Truy cập được
# puts local_var  # Lỗi: biến cục bộ không thể truy cập bên ngoài phương thức

4. Kiểu dữ liệu trong Ruby

Ruby có nhiều kiểu dữ liệu khác nhau, dưới đây là những kiểu phổ biến nhất:

4.1. Kiểu số (Integer, Float)

  • Integer: Số nguyên (1, 100, -5).
  • Float: Số thực (3.14, -2.5, 0.99).

Ví dụ:

num1 = 10       # Integer
num2 = 3.14     # Float

puts num1.class # Integer
puts num2.class # Float

4.2. Kiểu chuỗi (String)

Chuỗi là tập hợp các ký tự, có thể được tạo bằng dấu nháy đơn ' hoặc nháy kép ".

Ví dụ:

str1 = "Hello"
str2 = 'World'

puts str1 + " " + str2   # Nối chuỗi
puts "Số ký tự: #{str1.length}"  # Nội suy chuỗi

Lưu ý:

  • Dấu #{} chỉ hoạt động trong chuỗi có nháy kép "...", không hoạt động với nháy đơn '...'.
  • Có thể sử dụng nhiều phương thức chuỗi như .upcase, .downcase, .capitalize, .reverse.

4.3. Kiểu Boolean (True/False)

Ruby chỉ có hai giá trị Boolean: truefalse.

is_active = true
is_deleted = false

puts is_active.class  # TrueClass
puts is_deleted.class # FalseClass

Lưu ý: Trong Ruby, chỉ có falsenil là "falsey" (coi là giá trị sai). Tất cả các giá trị khác đều là "truthy" (coi là đúng).

4.4. Kiểu Nil (Giá trị rỗng)

nil đại diện cho một giá trị không tồn tại hoặc không xác định.

x = nil
puts x.nil?  # true

4.5. Kiểu Array (Mảng)

Array là danh sách các phần tử, có thể chứa nhiều kiểu dữ liệu khác nhau.

arr = [1, "Ruby", true, 3.14]

puts arr[0]  # Lấy phần tử đầu tiên (1)
puts arr[-1] # Lấy phần tử cuối cùng (3.14)

Một số phương thức hữu ích:

arr.push("New")  # Thêm phần tử vào cuối
arr.pop          # Xóa phần tử cuối
puts arr.length  # Độ dài mảng

4.6. Kiểu Hash (Từ điển)

Hash lưu trữ cặp key-value, giống như một từ điển.

person = {
  "name" => "Alice",
  "age" => 25,
  "job" => "Developer"
}

puts person["name"]  # Alice

Cú pháp hash mới (symbol keys):

person = {
  name: "Alice",
  age: 25,
  job: "Developer"
}

puts person[:name]  # Alice

5. Ép kiểu trong Ruby

Ruby cho phép ép kiểu giữa các loại dữ liệu bằng các phương thức như:

"123".to_i     # Chuyển chuỗi thành số: 123
123.to_s       # Chuyển số thành chuỗi: "123"
"3.14".to_f    # Chuyển chuỗi thành số thực: 3.14

6. Kết luận

Trong bài này, chúng ta đã học về:

  • Biến trong Ruby và cách đặt tên biến.
  • Các loại biến: cục bộ, toàn cục, instance, class.
  • Các kiểu dữ liệu cơ bản: số, chuỗi, boolean, nil, array, hash.
  • Cách ép kiểu dữ liệu trong Ruby.

Ở bài tiếp theo, chúng ta sẽ học về toán tử trong Ruby.

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ