Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ruby 勉強会@札幌‒09                2008‒08‒23Measure単位付き数値ライブラリ村田 賢太Ruby 札幌
単位付き数値とは?     2
単位付き数値とは? 173 [cm] 63 [kg] 376.730 [Ω] 101,325 [Pa] 1.602 10‒19 [C]                   2
Measure ライブラリ 単位付き数値クラスを提供 異なる単位間の変換を定義可能 単位付き数値の簡易記法を提供          3
インストール方法mrkn-macbook:~ root# gem install -r measureBulk updating Gem source index for: http://gems.rubyforge.orgSuccessful...
使い方mrkn-macbook:~ root# irbirb(main):001:0> require measureirb(main):002:0> Measure.define_unit :m, :lengthirb(main):003:0...
単位変換irb(main):006:0> Measure.define_conversion :m, :cm => 100irb(main):007:0> (Measure(1, :m) + Measure(1, :cm)).to_s=> "1...
マルチホップ変換  [in]   2.54倍    [cm]                 100倍                         [m]                 1000倍                  [mm...
マルチホップ変換  [in]   2.54倍    [cm]                         100分の1     2.54分の1                 100倍                            ...
マルチホップ変換    [in]   2.54倍    [cm]                           100分の1       2.54分の1                   100倍                    ...
簡易記法irb(main):013:0> require measure/supportirb(main):014:0> Measure.form { 1.m - 1.cm }.to_s=> "0.99 [m]"                ...
定義済み単位   measure/length を require すると次の単   位が定義され相互変換可能な状態になるm, meter          in, inch       pt, point, dp, didot_pointcm...
未対応な機能 多次元単位 たとえば 1 [kg m / s2] など  簡易記法なら 1.kg.m.s(‒2) かな? スケーリング以外の単位変換 [ C] = 5 ([ F] ‒ 32) / 9 など 開発版では対応済み           ...
Proc による単位変換irb(main):015:0> Measure.define_unit :deg_c, :temperatureirb(main):016:0> Measure.define_unit :deg_f, :tempera...
Future works スケーリング以外の変換を実装したバージョン をリリースする 定義済み単位を増やす 多次元単位への対応             12
Upcoming SlideShare
Loading in …5
×

Measure 単位付き数値ライブラリ

3,076 views

Published on

単位付き数値ライブラリ Measure の紹介

Published in: Technology, Business
  • Be the first to comment

Measure 単位付き数値ライブラリ

  1. 1. Ruby 勉強会@札幌‒09 2008‒08‒23Measure単位付き数値ライブラリ村田 賢太Ruby 札幌
  2. 2. 単位付き数値とは? 2
  3. 3. 単位付き数値とは? 173 [cm] 63 [kg] 376.730 [Ω] 101,325 [Pa] 1.602 10‒19 [C] 2
  4. 4. Measure ライブラリ 単位付き数値クラスを提供 異なる単位間の変換を定義可能 単位付き数値の簡易記法を提供 3
  5. 5. インストール方法mrkn-macbook:~ root# gem install -r measureBulk updating Gem source index for: http://gems.rubyforge.orgSuccessfully installed measure-0.1.01 gem installedInstalling ri documentation for measure-0.1.0...Installing RDoc documentation for measure-0.1.0...mrkn-macbook:~ root# 4
  6. 6. 使い方mrkn-macbook:~ root# irbirb(main):001:0> require measureirb(main):002:0> Measure.define_unit :m, :lengthirb(main):003:0> Measure.define_unit :cm, :lengthirb(main):004:0> Measure(1, :m)=> #<Measure:0x57d8c @unit=:m, @value=1>irb(main):005:0> Measure(1, :cm).to_s=> "1 [cm]" 5
  7. 7. 単位変換irb(main):006:0> Measure.define_conversion :m, :cm => 100irb(main):007:0> (Measure(1, :m) + Measure(1, :cm)).to_s=> "1.01 [m]"irb(main):008:0> Measure.define_unit :in, :lengthirb(main):009:0> Measure.define_conversion :in, :cm => 2.54irb(main):010:0> Measure.define_unit :mm, :lengthirb(main):011:0> Measure.define_conversion :m, :mm => 1000irb(main):012:0> (Measure(210, :mm) - 2*Measure(1, :in)).to_s=> "159.2 [mm]" 6
  8. 8. マルチホップ変換 [in] 2.54倍 [cm] 100倍 [m] 1000倍 [mm] 7
  9. 9. マルチホップ変換 [in] 2.54倍 [cm] 100分の1 2.54分の1 100倍 [m] 1000倍 1000倍 [mm] 7
  10. 10. マルチホップ変換 [in] 2.54倍 [cm] 100分の1 2.54分の1 100倍 [m] 1000倍連結な単位間での 1000倍相互変換の経路を [mm]幅優先探索で発見 7
  11. 11. 簡易記法irb(main):013:0> require measure/supportirb(main):014:0> Measure.form { 1.m - 1.cm }.to_s=> "0.99 [m]" 8
  12. 12. 定義済み単位 measure/length を require すると次の単 位が定義され相互変換可能な状態になるm, meter in, inch pt, point, dp, didot_pointcm, centi_meter ft, feet bp, big_pointmm, milli_meter yd, yard pc, picakm, kilo_meterum, micro_meternm, nano_meter 9
  13. 13. 未対応な機能 多次元単位 たとえば 1 [kg m / s2] など 簡易記法なら 1.kg.m.s(‒2) かな? スケーリング以外の単位変換 [ C] = 5 ([ F] ‒ 32) / 9 など 開発版では対応済み 10
  14. 14. Proc による単位変換irb(main):015:0> Measure.define_unit :deg_c, :temperatureirb(main):016:0> Measure.define_unit :deg_f, :temperatureirb(main):017:0> Measure.define_conversion :deg_c, :deg_f => lambda{|x| 9.0*x/5.0 + 32 }irb(main):018:0> Measure.define_conversion :deg_f, :deg_c => lambda{|x| 5.0*(x - 32)/9.0 }irb(main):019:0> Measure.form { -40.deg_c.as_deg_f }.to_s=> "-40.0 [deg_f]" 11
  15. 15. Future works スケーリング以外の変換を実装したバージョン をリリースする 定義済み単位を増やす 多次元単位への対応 12

×