2010-05-18 9 views
11

Estoy buscando algo parecido a JodaTime o JSR 310 para Scala que aproveche las buenas funciones de Scala, como la sobrecarga del operador, y no confíe en las conversiones implícitas (tengo un miedo irracional a las conversiones implícitas).¿Hay una buena API de fecha/hora disponible para Scala?

Conozco http://github.com/jorgeortiz85/scala-time, pero solo proxenetas JodaTime con implicits.

+0

¿Está buscando algo que proporciona <, > operadores? –

+4

Te sugiero que te deshagas de tu miedo irracional a las conversiones implícitas. ;-) – Jesper

+0

@Timo - Me gustaría las operaciones de comparación, junto con cosas como + y menos. @Jesper - El miedo no es del todo irracional. Los Implicits tienen un impacto en el rendimiento. Pueden inducir interacciones extrañas con cosas como la igualdad. Se basan en la inferencia de tipos, y he descubierto que mezclar muchas cosas que dependen de la inferencia de tipos es una buena receta para la confusión absoluta. –

Respuesta

3

No hay nada de malo con las conversiones implícitas. Incluso si no se usó una biblioteca Java para la lógica subyacente, cualquier biblioteca Scala puramente diseñada seguiría utilizando implícitos, lo que le permite escribir expresiones como 5.days + 3.minutes.

No todos los implicits se crean iguales tampoco, una conversión implícita a un tipo muy específico sobre el que se tiene control total es casi seguro.

Como ya se ha mencionado, tales conversiones se optimizarán en la mayoría de los casos, especialmente con el análisis de escape activado, ¡así que no se preocupe!

Hasta que finalice JSR 310, joda-time es lo mejor que obtendrá.

Aparte de la necesidad de seguir las convenciones de nomenclatura de Java y la falta de sobrecarga del operador, joda-time ya es una muy buena opción para la Scala idiomática. El diseño es de naturaleza muy funcional, especialmente la forma en que abarca la inmutablidad, por lo que el tiempo de scalaj es en realidad una envoltura muy delgada alrededor de la biblioteca.

También obtiene la ventaja de que scalaj-time se puede actualizar fácilmente para usar JSR 310 cuando está disponible, por lo que será mucho menos doloroso migrar su código en ese momento.

Desde 2.8, ha cambiado de nombre en tiempo Scala scalaj tiempo: http://github.com/scalaj/scalaj-time

+1

Me imagino que pasar del envoltorio JodaTime de Scala al envoltorio JSR310 de Scala será mucho menos doloroso que usar esas cosas directamente (o en Java). Sería divertido si cambiar la exportación y corregir algunos nombres de clase sería suficiente :-) – soc

+0

Las conversiones implícitas agregan una capa semi-oculta de indirección por encima de lo que hace la envoltura. Esto agrega complejidad y sobrecarga de tiempo de ejecución. No hay nada de malo en ellos como característica, pero ocasionalmente se usan de manera gratuita. –

+0

¿Es gratuito convertir un entero desnudo en varios minutos? –

Cuestiones relacionadas