@kyanny's blog

印刷は人間に対し市場を作り出し、国民軍を創設する方法も教えたのであった - マーシャル・マクルーハン「グーデンベルグの銀河系」

3章 数値

あんまり長く書いても時間ばかりかかってしょうがないので、要点をうまく拾っていけるように気をつける。

数値について。とても大きい整数も ok で、 Perl のように 100_000_000 と可読性のためにアンダースコアを混ぜることもできる。

0x, 0X ... 16進数
0d, 0D または何もつけない ... 10進数
0o, 0O, 0 ... 8進数 (オー)
0b, 0B ... 2進数

Fixnum, Bignum というクラスを数の大きさによって自動的に使い分ける。 Integer クラスのサブクラス。浮動小数点数(実数)を使いたいときは 1.0 のように小数点をつける。精度について。 Float クラスにいろいろ定数があってそれで。

Infinity と NaN について。 nan == nan は false だけど nan.equal?(nan) は true だった。割り算するとき、分母と分子が両方とも整数で分子が 0 だと zero division error だけど片方が実数なら Infinity になる。その他 Integer, Float, Numeric クラスのメソッドなど。

他の数値クラス。 BigDecimal, Matrix など。

比較演算子もとくにかわりなく。ここでも Comparable モジュールというのがでてきた。 <=> 宇宙船演算子から他の >, >= などの比較演算子を導出できるんだそうだ。

あと Math モジュールから数学関数や数学定数を利用できる。 Math.sqrt で平方根、 Math::PI で円周率。定数を参照するときは Class::CONST という流儀のようだ。これは慣習ではなくて決まりなのかな? include がでてきた。 require の引数は "" で囲う必要があるけど include の引数は逆に "" で囲ってはいけないのか。まぎらわしい。

ビット演算は・・・パス。符号とビットの話も全面的にパス。

以上で3章終わり。次は4章、文字列。長い。