12/08/2018, 14:46

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.

0