2010-11-21 14 views

Respuesta

18

Wow, hay unos cuantos más de ellos de lo que esperaba. Aquí está lo que creo que es una lista completa, en orden alfabético, con ejemplos de uso desprovisto de su documentación. También noté que no podía ejecutarlos localmente.

  1. Alchemist

    require 'alchemist' 
    Alchemist.setup 
    8.miles.to.meters 
    10.kilometers + 1.mile # 11.609344 kilometers 
    
  2. measurement

    Ésta aparece de la fecha, la última confirmación fue hace 5 años, y no parece funcionar en 1.9.3 para mí .

    include Measurement::Length 
    Inch.new(12).to_centimeters # => #<Measurement::Length::Centimeter:0x173c2b4 @units=30.48> 
    
  3. Phys-Units

    require "phys/units" 
    Q = Phys::Quantity 
    U = Phys::Unit 
    
    Q[1.23,'km'] + Q[4.56,'m'] #=> Phys::Quantity[1.23456,'km'] 
    Q[123,'mile']/Q[2,'hr']  #=> Phys::Quantity[61,'mile/hr'] 
    Q[61,'miles/hr'].want('m/s') #=> Phys::Quantity[27.26944,'m/s'] 
    Q[1.0,'are'] == Q[10,'m']**2 #=> true 
    
  4. Quantity

    Tenga en cuenta que éste declara que no puede ser de producción en el README.

    require 'quantity/all' 
    1.meter           #=> 1 meter 
    1.meter.to_feet         #=> 3.28083... foot 
    c = 299792458.meters/1.second     #=> 299792458 meter/second 
    
    newton = 1.meter * 1.kilogram/1.second**2  #=> 1 meter*kilogram/second^2 
    newton.to_feet         #=> 3.28083989501312 foot*kilogram/second^2 
    newton.convert(:feet)         #=> 3.28083989501312 foot*kilogram/second^2 
    jerk_newton = newton/1.second       #=> 1 meter*kilogram/second^3 
    jerk_newton * 1.second == newton      #=> true 
    
  5. SY

    Ver Boris Stitnickey's answer.

  6. ruby-measurement

    require 'ruby-measurement' 
    
    measurement = Measurement.parse('3 feet') # => 3.0 ft. 
    measurement.convert_to(:yards)    # => 1.0 yd. 
    measurement.convert_to(:in)    # => 36.0 in. 
    measurement.convert_to(:inches)   # => 36.0 in. 
    
    measurement1 = Measurement.parse('3 feet') # => 3.0 ft. 
    measurement2 = Measurement.parse('6 inch') # => 6.0 in. 
    measurement1 + measurement2    # => 3.5 ft. 
    
  7. ruby-units

    require 'ruby-units' 
    
    unit = Unit("mm")    # unit only (defaults to a scalar of 1) 
    unit = Unit("1 mm")    # create a simple unit 
    unit = Unit("1 kg*m^2/s^2")  # complex unit 
    
    unit1 =~ unit2     # true if units are compatible 
    unit1.compatible?(unit2)   # true if units are compatible 
    
    unit1 = unit >> "ft"    # convert to 'feet' 
    unit3 = unit1 + unit2   # resulting object will have the units of unit1 
    
    unit1 === unit2     # true if units and quantity are the same, even if 'equivalent' by <=> 
    unit.convert_to('ft')   # convert 
    (unit1 + unit2).convert_to('ft') # converts result to 'ft' 
    
  8. Units for Ruby

    require 'units' 
    
    three_meters = 3.meters 
    two_meters = 2.m 
    one_inch = 1.inch 
    
    3.meters.to_inches # => 118.1103 inch 
    10.inches.to_mm # => 254.0 millimeter 
    
  9. Unitwise

    require 'unitwise/ext' 
    
    1.yard == (1.foot * 3)      # => true 
    
    1.quart < 1.liter       # => true 
    
    2.meter + 3.inch - 1.yard     # => <Unitwise::Measurement 1.1618 meter> 
    
    1.convert_to('kg.m2/s2') == 1.joule   # => true 
    
    (20.kg * 9.8.convert_to('m/s2')).to_pound_force # => <Unitwise::Measurement 44.06255284754326 pound_force> 
    
    (300.horsepower * 60.second).to_calorie  # => <Unitwise::Measurement 3208077.8414151203 calorie> 
    
  10. Van/Unit

    Como otro cartel, que tenían problemas para conseguir este trabajo. Sin embargo, puede ver Jörg W Mittag's answer para el uso.

Como el autor de Unitwise, podría ser obvio que es mi favorito de grupo. Sin embargo, lo aliento a que al menos lo compruebe.

6

Prueba impresionante Alchemist.

......

+0

Gracias y +1, se ve muy bien. –

+0

Github es 404-ing. :( –

+2

Pruebe http://github.com/halogenandtoast/alchemist – Psynix

1

Tome un vistazo a Tom Sawyer de Van/Unit

Esto es de la página de inicio:

require 'van/units' 
include Units 

1.mile.to(feet) 
1.acre.to(yd**2) 
1.acre.to(sq_yd) 
1.gallon.to(self.L) 
1.lb.to(kg) 
1.m.s.to(m.s) 
1.sq_mi.to(km**2) 
1.mile.to(km) 
1.usd.to(twd) 
1.bit/s + 8.bytes/s 
+0

Precioso. Esto es exactamente lo que esperaba en secreto. Gracias! +1 y acepté –

0

he podido conseguir Van/unidades para trabajar - todo examinar las memorias es:

/Library/Ruby/Gems/1.8/gems/vanunits-1.5.0/lib/van/units/base.rb:493:in `a ': unidades incompatibles para la operación (TypeError) de unitstest.rb: 4

cuando se ejecuta

require 'rubygems' 
require 'van/units' 
include Van::Units puts 
1.meter.to(feet) 

yo pasamos una hora de intentar sin éxito que cortar la fuente de van/unidades.

La joya más antigua en la que se basa trabajaban fuera de la caja:

http://ruby-units.rubyforge.org/ruby-units/

0

vanunits parece roto. i sugeriría probar

rubyunits (http://ruby-units.rubyforge.org/ruby-units/)

o

mediciones (https://github.com/collectiveidea/measurement)

1

Trate gem install sy

require 'sy' 

(5.g *    # a bullet of 5g 
    500.m.s(-1) ** 2/# flying at a speed of 500m/s has kJ energy: 
2).in(:kJ)   #=> 0.625 

require 'sy/imperial'  

1.mile.in :ft #=> 5280.0 
1.acre.in :yd² #=> 4840.0 
1.gallon.in :l #=> 4.54609 
1.lb.in :kg  #=> 0.45359237 
1.mile².in :km² #=> 2.589988110336 
SY::SPEED_OF_LIGHT.in "furlong.fortnight⁻¹" #=> 1802617499785.2544 
+1

En [sy] (https://github.com/boris -s/sy), enfatizo la corrección del modelo comercial y la facilidad de uso sobre la facilidad de implementación. La única otra biblioteca de unidades físicas aparte de _sy_, cuyo modelo de objetos realmente me gusta, es [phys-units] (https: // github. com/masa16/phys-units) de [el autor de la famosa gema narray] (https://github.com/masa16). –

+0

+ 1/aceptando esto ya que parece significativamente más moderno/mantenido que las sugerencias anteriores. –

Cuestiones relacionadas