Module trong Ruby
1. Giới thiệu Một trong những công cụ mạnh nhất của Ruby on Rails là Module. Vậy module là gì? Module là một tập các phương thức, lớp, hằng số, do đó module cũng gần giống như class, chỉ khác là module không thể tạo các đối tượng và không thể thừa kế. Thường thì chúng ta sẽ gộp các lớp, ...
1. Giới thiệu
Một trong những công cụ mạnh nhất của Ruby on Rails là Module. Vậy module là gì?
Module là một tập các phương thức, lớp, hằng số, do đó module cũng gần giống như class, chỉ khác là module không thể tạo các đối tượng và không thể thừa kế.
Thường thì chúng ta sẽ gộp các lớp, phương thức và hằng số có liên quan với nhau vào một module để tránh xung đột tên. Nếu bạn đã từng làm việc với C# và Java thì có thể nói module trong Ruby tương đương với namespace trong C# và package trong Java vậy.
2. Cách khai báo và sử dụng
Dưới đây, là cách mà chúng ta tạo ra một module ở trong Ruby. Thực sự rất rất đơn giản.
module MyFirstModule def say_hello puts “Hello, I am a Module” end end
Trong Ruby, có 2 cách sử dụng method của module:
- mixin - nhúng và dùng như instance method
- module function
// Cách 1: Class Greeter include MyFirstModule end // Cách 2: module MyFirstModule def self.say_hello puts “Hello, I am a Module” end end // Khi vừa muốn được mixin và muốn được sử dụng như module function module MyFirstModule def self.say_hello puts “Hello, I am a Module” end module_function :say_hello end class Greeter include MyFirstModule end // Call method: Greeter.new.say_hello MyFirstModule.say_hello
Để sử dụng được các method của module ở trong các class chúng ta thường include hay extend những module này vào trong các class đó. include hay extend module vào trong một class, nghĩa là class đó có thể access các phương thức được khai báo ở trong module.
- include: mixes các method ở module như là instance method trong class.
- extend: mixes các method ở module như là class method trong class.
class A include MyFirstModule end class B extend MyFirstModule end => call method of module A.new.say_hello B.say_hello
Bài viết này chỉ dừng lại ở việc giới thiệu chung ở mức cơ bản về cách khai báo và sử dụng module. Hi vọng bài viết sẽ hữu ích.
Thanks for your reading!
Tham khảo: http://tutorials.jumpstartlab.com/topics/models/modules.html