2010-05-18 32 views
11

Scala için JodaTime ya da JSR 310 gibi bir şey arıyorum, operatör aşırı yüklenme gibi iyi Scala özelliklerinden yararlanıyor ve örtük dönüşümlere dayanmıyor (Çarpıcı dönüşümlere ilişkin irrasyonel bir korkum var).Scala için uygun bir tarih/saat API var mı?

http://github.com/jorgeortiz85/scala-time'un farkındayım, ancak yalnızca JodaTime'i örtülü olarak pimliler.

+0

Eğer <, > operatörlerine şey mi arıyorsunuz? –

+4

Size mantıksız gizli dönüşüm korkusundan kurtulmanızı öneriyorum. ;-) – Jesper

+0

@Timo - Karşılaştırma işlemlerini ve + ve eksi gibi şeyleri kullanmak istiyorum. @Jesper - Korku tamamen irrasyonel değildir. Implicits bir performans isabet var. Eşitlik gibi şeylerle garip etkileşimlere neden olabilirler. Tip çıkarımına güveniyorlar ve tür çıkarımına dayanan pek çok şeyin karışmanın mutlak karışıklık için iyi bir reçete olduğunu buldum. –

cevap

3

örtülü dönüşümlerle ilgili bir sorun yok. Altta yatan mantık için bir Java kütüphanesi kullanılmasa bile, hassas bir şekilde tasarlanmış saf Scala kütüphanesi hala 5.days + 3.minutes gibi ifadeler yazmanıza izin veren dolaylı ifadeler kullanacaktır.

Tüm örtütler eşit olarak oluşturulmaz, tam denetime sahip olduğunuz çok kesin bir türe örtük bir dönüştürme neredeyse kesinlikle güvenlidir.

Diğerleri de belirttiği gibi, bu dönüşümler çoğu durumda, özellikle de kaçış analizi açıldığında en iyi duruma getirilecek, bu yüzden endişelenmenize izin vermeyin!

JSR 310 sonlandırılıncaya kadar, joda zamanı alacağınız en iyisidir.

Java adlandırma kurallarına ve operatör aşırı yüklenme eksikliğine uyma gereği dışında, joda-time zaten deyimsel Scala için çok uygundur. Tasarım, doğası gereği, özellikle de immutabliteyi kucaklama biçiminde çok işlevseldir, bu yüzden skalaj süresi, kütüphanenin etrafında sadece çok ince bir sarıcıdır.

Ayrıca, scalaj-time'ın kullanılabilir olduğunda JSR 310'u kullanacak şekilde kolayca yükseltilebileceğinden de fayda elde edersiniz, bu nedenle kodunuzu o anda geçirmeniz çok daha az ağrılı olacaktır. 2,8 yana

, Scala-time yeniden adlandırıldı scalaj zamanlı: http://github.com/scalaj/scalaj-time

+1

Scala'nın JodaTime sarıcısından Scala'nın JSR310 sarıcısına taşınmanın, bu şeyleri doğrudan (veya Java'da) kullanmasından çok daha az acı çekeceğini tahmin edebilirim. İhracatın değiştirilmesi ve bazı sınıf adlarının düzeltilmesi yeterli olur. :-) – soc

+0

Implicit conversions, sarmalamanın yapılacağının üzerinde yarı gizli bir dolaylı katman katmanı ekler. Bu hem karmaşıklık hem de çalışma zamanı yükünü ekler. Onlarda bir özellik olarak yanlış bir şey yoktur, ancak bazen nedensiz yollarla kullanılırlar. –

+0

Çıplak bir tam sayıyı birkaç dakikaya dönüştürmek nedensiz mi? –

İlgili konular