0

Tìm hiểu Hash trong Ruby

Trong ruby ,Hash là gì ?

Hash là 1 cấu trúc dữ liệu được sử dụng để lưu trữ dữ liệu dưới dạng các cặp key – value.

Ví dụ :

Danh sách tên quốc gia và mã tương ứng .

Một hash với 3 cặp key/value như sau :

{ a : 1, b: 2, c: 3 }

Trong đó, a là key và 1 tương ứng là giá trị của key. Và các cặp key-value được ngăn cách bởi dấu phẩy.

Lưu giá trị trong Ruby hash

Đây là ví dụ khác:

fruits = { coconut: 1, apple: 2, banana: 3 }

Cách giá trị mới vào hash :

fruits[:orange] = 4

Tương tự, :orange là hash key, và 4 là value

Chú ý :

Có 1 dấu : trước từ :orange khi truy cập value và 1 dấu : phía sau orange: khi tạo hash. Vì đây là một cú pháp đẹp hơn để tạo hash và không cần hash-rocket(=>) như cách cũ.

Values có thể là bất kì đối tượng trong Ruby như : strings, array, intergers………..

Keys thường gặp là symbols( như :banana) hoặc strings.

Nhớ rằng keys là duy nhất,chúng ta chỉ có một :orange key, hoặc chỉ một :apple key . Nếu thêm cùng 1 key 2 lần thì sẽ thay value của nó.

Cách truy cập values một Hash

Chúng ta truy cập hash dùng key.

Ví dụ :

Fruits[:orange]
# 4

Nếu key không tồn tại,bạn sẽ nhận được nil.

Ví dụ :

Fruits[:peach]
#nil
  • Dùng fetch method sẽ cho phép cung cấp giá trị mặc định.
Fruits.fetch(:peach,0)

Cách merge hai Ruby hash

Chúng ta merge(hợp) hai hash thành 1 hash mới dùng merge method.

Đây là cách làm điều đó :

defaults = { a: 1, b: 2, c: 3 }
preferences = { c: 4 }
defaults.merge!(preferences)
# {:a=>1, :b=>2, :c=>4}

Lưu ý rằng vì các khóa là duy nhất, các giá trị mới sẽ ghi đè các giá trị cũ.

Một key có nhiều giá trị

Trong từ điển…

Các từ là duy nhất, nhưng chúng có thể có nhiều giá trị (định nghĩa).

Bạn có thể làm điều này trong Ruby!

dictionary = {
  opportunity: [
    "a set of circumstances that makes it possible to do something",
    "a situation or condition favorable for attainment of a goal"
  ],
  creativity: [
    "the use of imagination or original ideas to create something new",
    "the ability to create",
    "the process where new ideas emerge from combinings existing ideas in new ways"
  ]
}

Trong đó, dictionary[:creativity] cho bạn một mảng & [1] cho bạn phần tử thứ 2 từ mảng đó.

Nói cách khác, key là một symbol và là giá trị là mảng. Khi bạn truy cập hash, bạn sẽ nhận lại một mảng mà bạn truy cập bình thường, giống như bất kỳ mảng nào khác.

Cách sắp xếp một hash

-Khi sắp xếp Hash, nó sẽ sắp xếp theo key.

Ví dụ:

{ apple: 1, banana: 2 }.keys
# [:apple, :banana]

-Nhưng cũng có thể sắp xếp theo value .

{ c: 3, b: 1, a: 2 }.sort_by(&:last)

Khi sắp xếp 1 hash chúng ta không nhận lại 1 hash khác. Mà sẽ nhận được 1 mảng.Nhưng chúng ta có thể chuyển mảng trở lại thành Hash dùng to_h method

Lấy tất cả keys và velues từ một Hash

Cách lấy tất cả keys của 1 hash

Ví dụ :

{ apple: 1, banana: 2 }.keys
# [:apple, :banana]

Cách lấy tất cả values của 1 Hash

{ apple: 1, banana: 2 }.values
# [1, 2]

Muốn kiểm tra 1 key có tồn tại trong Hash dùng key? Method

Lời kết:

Qua bài viết,mình đã giới thiệu với các bạn về Hash,một cấu trúc dữ liệu phổ biến trong Ruby.

Cảm ơn mọi người đã đọc !

Tài liệu tham khảo : https://www.rubyguides.com/2020/05/ruby-hash-methods/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí