LPIC Lv1
GRUB2の設定ファイルについての疑問
パーティションの番号はどう指定すればいいのかが分からなかった。
参考にした情報によると「(GRUB2の場合は)パーティション番号は(以前のバージョンのやり方である)ゼロから、ではなく1から数え始めます。」
とのことらしい。
プロを目指す人のためのRuby入門
演算子の中にも再定義できるものとできないものがある。
再定義できるかどうかはドキュメントを参考にする。
ここでは例としてProductクラス同士を下記のように比較できるように再定義する。
a = Product.new('A-0001')
b = Product.new('B-0002')
c = Product.new('A-0001')
a != b #=> true
a == c #=> true
a != 1 #=> true
class Product
def ==(other)
if other.is_a?(Product)
code == other.code
end
end
end
==はメソッドなので先頭に.をつけて呼ぶことができる。
a.==(c) #=> true
また、==が呼び出されるのは左辺のオブジェクトなので、
右辺に書いた場合はProduct#==は呼ばれない。
等値を判定するメソッドには4種類ある。
- equal?
- ==
- eql?
- ===
このうちequal?以外は再定義が可能。
プロを目指す人のためのRuby入門
DVDクラスがProductクラスを継承すると、そこにスーパークラスとサブクラスの関係が生まれる。
継承でよくある誤解として「クラスの機能を全部引き継ぐ」という考えがある。
この考えだと非常に扱いづらいクラスが出来上がるので、「性質や概念の共通点」に着目する必要がある。
こう考えるための概念として「is-aの関係」がある。
例えば、販売管理システムにおける「DVDは商品の1種である(DVD is a product)」の関係は違和感がないはず。
OOPの参考書として「オプジェクト指向設計ガイド」がある。
Rubyの継承は単一継承。(ミックスインという多重継承に似た機能は8章で説明)
継承関係の頂点にはBasicObjectクラスがあるが、特殊な用途でない限りObjectクラスが頂点と考えて良い。
(Ruby1.9以前はObjectクラスが継承関係の頂点にいた。)