OpenStruct?

Hi all,

Hôm nay chúng ta sẽ tiếp tục tìm hiểu thêm về một thuật ngữ, một cách sử dụng hiểu quả bất ngờ đến những việc đơn giản.

Bạn đã từng bao giờ viết 1 class để lưu trữ thông tin về một hình tròn gồm các thông tin cơ bản như Tọa độ (x,y), bán kính R?

Khi đó chắc bạn phải viết 1 class để làm việc này ?

Tuy nhiên với OpenStruct việc lưu trữ này hết sức dễ dàng và hiệu quả mà chúng ta không cần quá nhiều thời gian để tổ chức một class dạng như vậy.

OpenStuct là một dạng cấu trúc dữ liệu, dễ hiểu hơn có thể hình tượng về Hash.

OpenStruct được xây dựng dựa vào metaprograming trong ruby thông qua các phương thức dựa trên chính class đó.

Cách sử dụng( đơn giản và hiệu quả như mình đã nói)

Hoặc với giá trị là một hash

Từ một biến này bạn muốn tính toán thì chỉ việc gọi vào thuộc tính đó(chính xác là method đó) sẽ được kết quả mong muốn để tính toán.

Việc sử dụng OpenStruct rất phù hợp cho  việc bạn lưu trữ một vài kiểu đơn giản nhưng có chung cấu trúc (thay vì ta phải build 1 class chung)

P/s: Vì OpenStruct sử dụng metaprograming có sẵn trong ruby nên việc sử dụng hàm send hoàn toàn hợp lý và hiểu quả cho việc thay đổi giá trị cho biến nào đó.

Ví dụ:

Mong chút kiến thức về OpenStruct sẽ giúp được các bạn trong một vài trường hợp nào đó.

Tuy nhiên OpenStruct cũng có một số hạn chế đó là về tốc độ. Cụ thể là giữa Hash và OpenStruct và Class tự build. Ở một bài viết khác mình sẽ phân tích vấn đề này.

Thân.

 

 

 

Leave a Reply