「値 (物理量)」と「単位」を併せ持つクラス。 units コマンドのような単位変換機能の他、 km と mile など、異なる単位を持つ量の演算も可能。
require 'quanty'
Quanty(1.23,'km') + Quanty(4.56,'m') #=> Quanty(1.23456,'km')
Quanty(123,'mile') / Quanty(2,'hr') #=> Quanty(61,'mile / hr')
Quanty(61,'miles/hr').want('m/s') #=> Quanty(27.26944,'m/s')
Quanty(1.0,'are') == Quanty(10,'m')**2 #=> true
Math.cos(Quanty(60,'degree')) #=> 0.5
とりあえず Object。(Numericのほうがよいかも)
Quanty.new([value],[unit])Quanty([value],[unit])量の値をvalue、単位をunit (文字列)とする Unit クラスのインスタンスを生成する。 valueが省略された時は、1が指定された場合と同じ。 unitが省略された時は、""が指定された場合と同じで、単位なし量になる。 単位の書き方は、下の単位表記法を参照。
self + otherself - other量の加算・減算。 otherの単位をselfの単位に変換して演算する。 単位変換ができなければ例外が発生する。 結果を、selfを単位にした Quanty クラスのインスタンスで返す。
self * other量の乗算。 結果の単位は、selfとotherの単位を連結して作る。
self / other量の除算。
結果の単位は、
selfとotherの単位を"/"をはさんで連結して作る。
self ** number量の冪乗。 結果の単位は、"(selfの単位)^number" として作る。
self == otherself < otherself <= otherself > otherself >= other量の比較。
coerce(number)numberを単位なしQuantyクラスのインスタンスにし、 [number,self]として返す。
to_sito_SIselfをSI単位系に変換する。
to_fselfが単位なし量の場合は、自身の値を返す。 selfが角度の場合は、radianに変換した値を返す。 それ以外の単位の場合は、例外が発生する。
unit単位の文字列を返す。
valvalue量の値を返す。
want(unit)selfを unit (文字列) を単位とした量に変換する。
'N m' == 'N*m'
'/s' , 'm/s'
'm-2' == 'm^-2' == 'm**-2'
'12 inch' == 'feet'
'm/s*m' == 'm^2/s'. 'm/(s*m)' == '/s'.
Masahiro Tanaka (2001-04-25)