Tôi biết Rails có một số người giúp việc tốt để quản lý ngày và giờ. Có một dự án đã làm việc bao gồm hoặc kết hợp DSL sạch cho các đơn vị tiêu chuẩn và chuyển đổi của chúng không? Bất kỳ dự án nào có người trợ giúp cho việc chuyển đổi giữa các đơn vị cơ bản của chiều dài và trọng lượng của hai hệ thống sẽ hoạt động. Cảm ơn bạn!Thư viện để chuyển đổi đơn vị vật lý (kg, pound) trong Ruby?
Trả lời
Wow, có khá một vài chi tiết của những hơn tôi mong đợi. Dưới đây là những gì tôi tin là một danh sách đầy đủ, theo thứ tự bảng chữ cái, với việc sử dụng ví dụ bị tước khỏi tài liệu của họ. Tôi cũng lưu ý nếu tôi không thể chạy chúng tại địa phương.
-
require 'alchemist' Alchemist.setup 8.miles.to.meters 10.kilometers + 1.mile # 11.609344 kilometers
-
một Điều này dường như đã lỗi thời, cam kết cuối cùng là 5 năm trước đây, và nó dường như không chạy trên 1.9.3 cho tôi .
include Measurement::Length Inch.new(12).to_centimeters # => #<Measurement::Length::Centimeter:0x173c2b4 @units=30.48>
-
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
-
Lưu ý rằng điều này khẳng định rằng nó không phải là sản xuất sẵn sàng trong 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
-
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.
-
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'
-
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
-
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>
-
Giống như một poster, tôi gặp khó khăn khi làm việc này. Tuy nhiên, bạn có thể thấy Jörg W Mittag's answer để sử dụng.
Là tác giả của Unitwise, có thể hiển nhiên rằng đó là tác phẩm yêu thích của tôi trong nhóm. Tôi khuyến khích bạn ít nhất là kiểm tra xem nó ra, mặc dù.
Hãy thử tuyệt vời Alchemist.
......
Hãy xem Tom Sawyer của Van/Unit
Đây là từ trang chủ:
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
Tuyệt đẹp. Đây chính xác là những gì tôi đã hy vọng bí mật. Cảm ơn bạn! +1 và chấp nhận –
tôi đã không thể có được Van/đơn vị để làm việc - tất cả báo cáo là:
/Library/Ruby/Gems/1.8/gems/vanunits-1.5.0/lib/van/units/base.rb:493:in `để ': đơn vị không phù hợp cho hoạt động (TypeError) từ unitstest.rb: 4
Khi chạy
require 'rubygems'
require 'van/units'
include Van::Units puts
1.meter.to(feet)
tôi đã dành một tiếng đồng hồ nhưng không thành công cố gắng để hack mã nguồn của van/đơn vị.
Các viên ngọc trai trên đó nó được dựa làm việc ra khỏi hộp:
vanunits dường như bị phá vỡ. tôi đề nghị thử
rubyunits (http://ruby-units.rubyforge.org/ruby-units/)
hoặc
đo (https://github.com/collectiveidea/measurement)
Hãy thử 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
Trong [sy] (https://github.com/boris -s/sy), tôi nhấn mạnh tính chính xác của mô hình kinh doanh và dễ sử dụng dễ dàng hơn việc thực hiện Thư viện đơn vị vật lý duy nhất khác ngoài _sy_, có mô hình đối tượng tôi thực sự thích, là [phys-units] (https: // github. com/masa16/phys-units) từ [tác giả của đá quý narray nổi tiếng] (https://github.com/masa16) –
+ 1/chấp nhận điều này vì nó có vẻ hiện đại hơn nhiều so với các đề xuất trước đó. –
Cảm ơn và +1, trông cực kỳ đẹp. –
Github là 404-ing. :( –
Hãy thử http://github.com/halogenandtoast/alchemist – Psynix