Successfully reported this slideshow.

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

2

Share

Upcoming SlideShare
5分で分かる Measure
5分で分かる Measure
Loading in …3
×
1 of 15
1 of 15

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

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

  1. 1. Ruby 勉強会@札幌‒09 2008‒08‒23 Measure 単位付き数値ライブラリ 村田 賢太 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 measure Bulk updating Gem source index for: http://gems.rubyforge.org Successfully installed measure-0.1.0 1 gem installed Installing ri documentation for measure-0.1.0... Installing RDoc documentation for measure-0.1.0... mrkn-macbook:~ root# 4
  6. 6. 使い方 mrkn-macbook:~ root# irb irb(main):001:0> require 'measure' irb(main):002:0> Measure.define_unit :m, :length irb(main):003:0> Measure.define_unit :cm, :length irb(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 => 100 irb(main):007:0> (Measure(1, :m) + Measure(1, :cm)).to_s => "1.01 [m]" irb(main):008:0> Measure.define_unit :in, :length irb(main):009:0> Measure.define_conversion :in, :cm => 2.54 irb(main):010:0> Measure.define_unit :mm, :length irb(main):011:0> Measure.define_conversion :m, :mm => 1000 irb(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/support' irb(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_point cm, centi_meter ft, feet bp, big_point mm, milli_meter yd, yard pc, pica km, kilo_meter um, micro_meter nm, 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, :temperature irb(main):016:0> Measure.define_unit :deg_f, :temperature irb(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

×