Giới thiệu về hàm Module#module_function
Trong Ruby, có 2 cách sử dụng method của module. Cách thứ nhất là 'nhúng' (mixin) - dùng như instance method và cách thứ hai là dùng theo kiểu module function. Ví dụ: Mixin: module MyWords def hello puts "Hello world" end end class HelloWorld include MyWords end HelloWorld.new.hell ...
Trong Ruby, có 2 cách sử dụng method của module. Cách thứ nhất là 'nhúng' (mixin) - dùng như instance method và cách thứ hai là dùng theo kiểu module function. Ví dụ: Mixin:
module MyWords def hello puts "Hello world" end end class HelloWorld include MyWords end HelloWorld.new.hello # => Hello world
Các bạn có thể thấy là hàm #hello được gọi thông qua object của HelloWorld. Đây là cách phổ biến mà người viết Ruby hay dùng để chia sẻ code giữa các class với nhau thay vì dùng class inheritance.
Module functions: Tương tự như cách sử dụng class methods, module cho phép gọi hàm với receiver là module. Ví dụ:
module MyWords def hello puts "Hello world" end module_function :hello end class HelloWorld include MyWords end HelloWorld.new.hello # => Hello world MyWords.hello # => Hello world
Ruby cung cấp hàm trên với param là tên của method bạn muốn biến thành module_function. Còn rất nhiều các hàm khác của Ruby giúp rút ngắn và làm code súc tích và dễ hiểu hơn. Mình sẽ tìm hiểu và viết một số bài tương tự trong thời gian tới.