Bí danh trong Ruby

Tram Ho

Bạn đã đùng alias trong ruby chưa? , vậy hôm này chúng ta cùng đi tìm hiểu nhé

1.Alias in Ruby

Trong bài viết này, tôi sẽ cùng các bạn tìm hiểu các vấn đề sau:

  • The alias keyword
  • The alias_method keyword
  • aliases and scopes
  • aliases behind the scene

2.The alias keyword

Ruby cung cấp cho chúng ta alias keywork để thỏa thuận với method và attributes

Ở đây chúng ta đã định nghĩa method Book#book_namevà định nghĩa một bookname alias cho method này.
Nên lúc này ta có bookname là alias của method book_namename lại là alias của bookname
Do đó khi ta gọi name hoặc booknamethi cùng trả về một kết quả.

3.The alias_methodmethod

Cũng giống như alias keywork chúng ta cũng định nghĩa method Book#book_name và định nghĩa bookname, name là alias của mehtod.
Chúng ta dễ dang nhìn thấy alias_method lấy StringSymbol là tham số, điều này giúp Ruby xác định được alias hay là alias_mehtod

4.Alias và scopes

Trong thực tể thì Module#alias_method có cách hoạt động khác với alias keywork trong một điểm đố là scope.
Hãy xem xét ví dụ sau:

Ở đây chúng ta có thể thấy rằng khi gọi method alisa_method trong method Device#alias_description xác định alias được định nghĩa trên method describe trên method Microwave#description chứ không phải trên Device#description.

Bây giờ hãy xem chuyện gì xảy ra với alias keyword:

Chúng ta có thể thấy khi gọi alias trong method Device#alias_description, alias describe của Device#descriptionchứ không phải Microwave#description

5.Aliases behind the scene

Nào chúng ta hay quay lại ví dụ về Book class để tìm hiểu điều gì xảy ra alias được định nghĩa.


Behind the scene username alias được coi là một phương pháp.
Trong ruby mồi method sẽ được chèn vào một table để keep track tât các method của chương trình của bạn. Bảng này được gọi là method_entry table.

Vì vậy book_name method là một new entry được chèn vào method_entry table . Sẽ bao gồm những thành phần:

  • Đinh danh phương thức `book_name’
  • Nội dung của method Book#book_name
  • Book class

Đó là cách mà alias keyword và alias_method có thể xác đinh được alias method hiện có.
Bây giờ chúng ta nhìn đến new entry alias bookname gồm có:

  • Đinh danh bookname method
  • Nội dung của method Book#book_name
  • Class Book

Đó là cách mà alias keyword và method alias_method xác định bí danh cho một phương thức hiện có.
Lưu ý rằng entry chứa nhiều thông tin hơn tôi đã mô tả để giữ cho nó thật đơn giản chúng ta tập trung vào aliaskeyword.

Link thảo: https://medium.com/rubycademy/alias-in-ruby-bf89be245f69

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo