Ruby公式教科書の模擬問題に出題された箇所について情報をまとめてみる。
数学関連
Rationalクラス
- 有理数を扱うNumericクラスのサブクラス
- Integerクラスを拡張する
- Integer、Rationalとの演算結果はRational
- Floatとの演算結果はFloat
Complexクラス
- 複素数を扱うNumericクラスのサブクラス
- Nemericクラス、Mathモジュールを拡張する
- 演算結果は常にComplex
require 'rational' require 'complex' a = 1.0 + 1 # FloatとRationalの演算はFloatになる a = a + Rational(1,2) # => 2.5 # FloatとComplexの演算はComplexになる a = a + Complex(1,2) # => (3.5+2i) (Complexオブジェクト)
StringIO
- 文字列をIOクラスと同様のインターフェースで取り扱うためのクラス
- StringIO内のバッファに文字列を格納し、getsやreadlineで文字列を取得可能
- IOクラスとは直接の継承関係はなし
Threadクラス
start,fork,newというメソッドあり。すべてthreadを生成するメソッド
違いはstart,forkはinitializeを呼ばないが、newは呼ぶ
日時関連
DateTime
require "Date" d1 = DateTime.new d2 = DateTime.new # dateTime同士の減算結果はRationalになる p (d2 - d1).class #=> Rational
Dateクラスのオブジェクトの計算
require "Date" d1 = Date.new p d1.strftime("%m/%d") #=> "01/01" d1 = d1 + 1 #1を加算すると1日後の日付になる p d1.strftime("%m/%d") #=> "01/02" #シフトさせると1月後の日付になる p (d1 >> 1).strftime("%m/%d") #=> "02/02"
Time
d1 = Time.new d2 = Time.new # Time同士の減算はFloatとなる p (d2 - d1).class # => Float
Object#freeze
オブジェクトの凍結(内容変更を禁止)を行う。
変数への参照自体は凍結できない。
hash = {"a" => 1, "b" => 2}.freeze # ハッシュオブジェクト自体の変更はできなくなる hash["c"] = 3 #=> RuntimeError: can't modify frozen Hash # 参照先は変更できる hash = "a" #=> "a"
RDocコメントのマークアップ
読み込み対象行
- 「#」で始まる行
- =begin〜=endで囲んだ行 (複数行用)
ドキュメントの生成
下記を実行するとdocディレクトリ以下にHTML形式で出力される。
rdoc
マークアップの書き方
- = word でh1サイズで表示
- == word でh2サイズで表示
- *word*で太字
- _word_でイタリック
- +word+で等幅フォント
- *または-で番号なしリスト
- 数字 + ピリオド「.」で番号付きリスト