対象者
Ruby初心者.
この記事を読んでわかること
モジュールとは何か、モジュールの使い方。
目次
モジュールとは.
→メソッドを集めたもの.
それとってクラスじゃないの?と思ったのは私だけでしょうか?
モジュール↓
module Salary def calculate_salary end def kihon end def teate end
クラスとほとんど同じやん‥.
class クラス名
で定義するところが
module モジュール名
に変わっただけやん‥
1. クラスとモジュールの違い.
簡単に比較してみるとクラスの劣化版のような印象を受けました。この時点でモジュールを使う理由がないと感じたのは私だけでしょうか? しかし
1. モジュールの使用用途
1. 名前空間の提供
名前空間の提供とは? ⇨同じ名前のメソッドやクラス名を使えるようにする機能.
module Person class Student def self.say puts "I'm Ken." end end end class Student def self.say puts "私はケンです" end end Person::Student.say #=> "I’m Ken." Student.say #=> 私はケンです
module モジュール名でクラスを入れ子構造にすることで下のStudentクラスとは別のメソッドだと表現している。
1. インスタンスメソッドとして取り込む(Mix-in)
→モジュール内で定義したメソッドをクラスの中にインスタンスメソッドとして取り入れることができる=Studentクラスでgreetメソッドが使用できる クラス内で
include モジュール名
と定義すれば使えるようになる.
↓こんな風にインスタンスメソッドとして使用できる。
student = Student.new student.greet →puts ”こんにちは”と出力される
モジュールをオブジェクトに取り込む
特異メソッドとして取り込むこともできます。
class Greet def say puts "Hello" end end obj = Greet.new obj2 = Greet.new #↓特異メソッドという。オブジェクト.メソッド名で定義する def obj.hi puts "よろしく" end puts obj.hi ⇨よろしく puts obj2.hi⇨エラー