5分で分かる measure

Post on 31-May-2015

3.740 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

5分で分かる Measure

TRANSCRIPT

5分で分かるMeasure村田 賢太Kenta Murata

札幌 Ruby 会議‒01; 2008‒10‒25

やるおは偉いからその日のうちに宿題を片付けてしまうんだお!

本日の宿題自分の身長を測ってみよう!

身長を測ってみよう!

だっておwwwwwwwバカにするのもいいかげんにして欲しいおwww

やる夫の身長は11文字

放尿は気持ちイイお!

もう宿題終わったお!今日も YourAVHost でスッキリするお!

エロギーク様々だおっ

やる夫くん、気を付けて

だ、誰だお?

やる夫くん、問題を良く見て

本日の宿題自分の身長を測ってみよう!何フィートかな?

フィートってなんだお・・・さっきは書いてなかった気がするお・・・

11文字が何フィートになるか分かんないおどうしたらいいお?

Measure

Measure ライブラリ

‣ 単位付き数値クラスを提供‣ 異なる単位間の変換を定義可能‣ 単位付き数値の簡易記法を提供

18

単位付き数値とは?

‣ 173 [cm]‣ 63 [kg]‣ 376.730 [Ω]‣ 101,325 [Pa]‣ 1.602×10‒19 [C]

19

インストール方法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#

20

使い方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]"

21

単位変換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]"

22

マルチホップ変換[in] [cm]

[mm]

[m]

2.54倍

100倍

1000倍

2.54分の1

100分の1

1000倍連結な単位間での相互変換の経路を幅優先探索で発見

23

簡易記法irb(main):013:0> require 'measure/support'

irb(main):014:0> Measure.form { 1.m - 1.cm }.to_s

=> "0.99 [m]"

24

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]"

25

定義済み単位‣ measure/length を require すると次の単位が定義され相互変換可能な状態になる

m, meter pt, point, dp, didot_point in, inchcm, centi_meter bp, big_point ft, feetmm, milli_meter pc, pica yd, yardkm, kilo_meter aa, angstromum, micro_meter au, AU, astronomical_unitnm, nano_meter ly, light_year

26

Future works‣ 定義済み単位を増やす‣ 【急募】地域で定義が違う場合の対応方法‣ 多次元単位への対応‣ 1 [kg m / s2] ⇒ 1.kg.m.s(–2)‣ 複数の単位変換系をサポート‣ スレッドセーフ化

27

2008年10月25日 札幌Ruby会議にて

糸冬 了

top related