Khóa học ruby

Hashes trong Ruby

0 phút đọc

Hashes là một kiểu dữ liệu quan trọng trong Ruby, cho phép bạn lưu trữ và truy cập dữ liệu theo cặp khóa-giá trị. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về Hashes trong Ruby, bao gồm cách tạo, truy cập, thao tác và sử dụng chúng một cách hiệu quả.

Tạo Hashes (Creating Hashes)

Trong Ruby, bạn có thể tạo một Hash bằng nhiều cách khác nhau:

  1. Sử dụng cặp ngoặc nhọn {}:
hash = { "name" => "Alice", "age" => 30 }
  1. Sử dụng phương thức Hash.new:
hash = Hash.new    # Tạo một Hash rỗng
hash = Hash.new(0) # Tạo một Hash với giá trị mặc định là 0
  1. Sử dụng cú pháp tạo Hash mới:
hash = { name: "Alice", age: 30 }

Truy cập phần tử Hash

Bạn có thể truy cập các phần tử trong Hash bằng cách sử dụng khóa tương ứng:

hash = { "name" => "Alice", "age" => 30 }
puts hash["name"]  # Output: Alice
puts hash["age"]   # Output: 30

Hash Built-in Methods

Ruby cung cấp nhiều phương thức built-in để thao tác với Hash, bao gồm:

  • length, size: Trả về số lượng cặp khóa-giá trị trong Hash.
  • keys: Trả về một mảng chứa tất cả các khóa trong Hash.
  • values: Trả về một mảng chứa tất cả các giá trị trong Hash.
  • has_key?, key?, include?, member?: Kiểm tra xem một khóa có tồn tại trong Hash hay không.
  • has_value?, value?: Kiểm tra xem một giá trị có tồn tại trong Hash hay không.
  • merge: Trộn hai Hash thành một Hash mới.
  • each: Lặp qua từng cặp khóa-giá trị trong Hash.

Ví dụ:

hash = { "name" => "Alice", "age" => 30 }
puts hash.length        # Output: 2
puts hash.keys          # Output: ["name", "age"]
puts hash.values        # Output: ["Alice", 30]
puts hash.has_key?("name")  # Output: true
puts hash.has_value?(30)    # Output: true

new_hash = hash.merge({ "city" => "New York" })
# new_hash is now {"name"=>"Alice", "age"=>30, "city"=>"New York"}

hash.each { |key, value| puts "#{key}: #{value}" }
# Output:
# name: Alice
# age: 30

Các phương thức khác

Ngoài ra, Ruby còn cung cấp nhiều phương thức khác để thao tác với Hash, bao gồm:

  • select, filter: Tạo ra một Hash mới chứa các cặp khóa-giá trị thỏa mãn một điều kiện nhất định.
  • transform_keys, transform_values: Tạo ra một Hash mới bằng cách áp dụng một khối lệnh cho các khóa hoặc giá trị trong Hash.
  • slice: Tạo ra một Hash mới chứa các cặp khóa-giá trị được chỉ định.
  • compact: Tạo ra một Hash mới bằng cách loại bỏ các cặp khóa-giá trị có giá trị nil.

Ví dụ:

hash = { "name" => "Alice", "age" => 30, "city" => nil }

new_hash = hash.select { |key, value| value.is_a?(String) }
# new_hash is now {"name"=>"Alice"}

new_hash = hash.transform_keys { |key| key.to_s.upcase }
# new_hash is now {"NAME"=>"Alice", "AGE"=>30, "CITY"=>nil}

new_hash = hash.slice("name", "age")
# new_hash is now {"name"=>"Alice", "age"=>30}

new_hash = hash.compact
# new_hash is now {"name"=>"Alice", "age"=>30}

Tính năng Symbols làm khóa

Trong Ruby, bạn có thể sử dụng Symbols làm khóa cho Hash. Symbols là một kiểu dữ liệu đặc biệt trong Ruby, tương tự như String nhưng được sử dụng để đại diện cho các định danh bất biến. Sử dụng Symbols làm khóa có một số lợi ích như tiết kiệm bộ nhớ và tăng tốc độ truy cập.

hash = { :name => "Alice", :age => 30 }
# hoặc
hash = { name: "Alice", age: 30 }

puts hash[:name]  # Output: Alice
puts hash[:age]   # Output: 30

Kết luận

Hashes là một kiểu dữ liệu cực kỳ quan trọng và hữu ích trong Ruby, cung cấp nhiều phương thức và tính năng mạnh mẽ để thao tác với dữ liệu theo cặp khóa-giá trị. Bằng cách sử dụng Hashes một cách hiệu quả, bạn có thể viết mã Ruby dễ đọc, dễ bảo trì và hiệu quả hơn. Hãy tiếp tục khám phá và thực hành với Hashes trong Ruby để trở thành một lập trình viên giỏi hơn.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Ruby on Rails là gì?

entry

Is there an equivalent of “continue” in Ruby?

entry

Is everything in Ruby an object?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely