プロを目指す人のためのRuby入門 その13
第8章 モジュールを理解する
モジュール
モジュールはクラスと違い、モジュールからインスタンスを作成することができないことや、他のモジュールやクラスを継承することができません。
module Loggable def log(text) puts "[LOG] #{text}" end end class Book # モジュールを include する include Loggable def title log 'Book Title' end end book = Book.new book.title
include と extend
いつも忘れるRubyの include, prepend, extend の意味。そしてActiveSupport::Concernについても。 - Qiita
今のところ使い分け方が分かりませんが、覚えておきます。
配列とハッシュをfreezeする
deep_freezable.rb
module DeepFreezable def deep_freeze(array_or_hash) case array_or_hash when Array # 配列の各要素をfreeze array_or_hash.each do |element| element.freeze end when Hash array_or_hash.each do |key, value| key.freeze value.freeze end end # 配列自身をfreeze array_or_hash.freeze end end
team.rb
require './lib/deep_freezable' class Team extend DeepFreezable COUNTRIES = deep_freeze(['Japan', 'US', 'India']) end
bank.rb
require './lib/deep_freezable' class Bank extend DeepFreezable CURRENCIES = deep_freeze({ 'Japan' => 'yen', 'US' => 'dollar', 'India' => 'rupee' }) end
配列とハッシュを要素を含めてfreezeするモジュールを作成します。
本
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る