2014-09-19 21 views
5

yılında Geçişli özel birim dönüştürme ben ettik aşağıdaki özel birimleri (psuedo kodu) tanımlanmıştır:Simetrik ve Perl

unix_days = unix_seconds/86400; 
nasa_seconds = unix_seconds - 946728000; 

Bu bana doğrudan unix_days için unix_seconds dönüştürmek veya nasa_seconds için unix_seconds dönüştürmek sağlar. Ancak, başka bir formül yazmadan, unix_days'u doğrudan unix_seconds 'a dönüştürebilirim.

Benzer şekilde, ek formüller yazmadan nasa_seconds'u unix_days'a dönüştüremiyorum.

Ek işlevler yazmadan bunu yapmamı sağlayan akıllı bir Perl alt yordamı veya paketi var mı? Daha spesifik olarak, özel bir birim dönüşüm paketi:

  • bir birim dönüştürme işlevinin tersini tanrısal Can. Örneğin, f(x)=x/86400'un karşısındaki , g(y)=y*86400'dur.

  • Transitiviteyi gerektiği gibi uygulayabilir. Örneğin, unix_seconds = nasa_seconds + 946728000 (işlevsel olarak ters) ve unix_days = unix_seconds/86400 ise, bunları doğrudan nasa_seconds'dan unix_days'a dönüştürmek için birleştirebiliriz.

ihtiyacım eğer alışılmadık şekillerde dönüşüm formülleri yazma ile iyiyim. Örneğin, Fahrenheit Celsius olarak yazılmış olabilir:

C to F: *1.8 +32 

Bu form ters kolaydır: sadece yani geriye ve tersten adımları izleyin:

F to C: -32 /1.8 

böyle bir şey var mı?

cevap

5

Physics::Unit, gereksinim duyduğunuz tesisleri sağlamalıdır.

+0

Harika, teşekkürler! Kendi birimlerinizi tanımlamanıza izin veren paketler olduğunu fark etmemiştim. – barrycarter