プロを目指す人のためのRuby入門 その12
第7章 クラスの作成を理解する
定数
定数の再代入や変更を防ぐために、freeze メソッドを使います。
ID = ['aaa', 'bbb', 'ccc'].map(&:freeze).freeze
変数について
クラスインスタンス変数、クラス変数、グローバル変数について学びます。クラスインスタンス変数は、インスタンスに依らない変数です。インスタンスメソッド内で共有されることがなく、継承関係でも共有されません。一方で、クラス変数は共有されます。グローバル変数は、プログラムのどこからでもアクセス可能です。
演算子のオーバーライド
クラスに演算子を定義して比較できるようにします。
class Point attr_reader :a, :b def initialize(a, b) @a = a @b = b end def <=>(other) if @a == other.a @b - other.b else @a - other.a end end def to_s "#{@a} #{@b}" end end points = [Point.new(1, 4), Point.new(1, 2), Point.new(2, 8)] points.sort! points.each{|point| p point.to_s } # "1 2" # "1 4" # "2 8"
本
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
感想
7章の内容は以上です。軽く読んだところもあるので、また読み返したいと思います。