Module trong Ruby
Bài đăng này đã không được cập nhật trong 7 năm
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
All rights reserved