Forma equivalente de Scala de Rango a class personalizada

Recientemente mirando a Kotlin y usted puede hacer .. o en algunas classs personalizadas en lugar de Int u otros.

Kotlin logra eso a través de una function de extensión de la siguiente manera: operator fun <T: Comparable<T>> T.rangeTo(that: T): ClosedRange<T> que significa que mientras su class implemente una interfaz Comparable , puede getla gratis usted puede hacer: val now = LocalDate.now() val vacation = now..now.plusDays(10)

Descubrí que es bastante conveniente. Me pregunto cómo podemos hacerlo en Scala, sé que de alguna manera deberíamos lograrlo a través de la class de letra. Quizás sea correcto o incorrecto.

¿Alguien puede mostrarme la forma más sencilla de hacerlo en Scala? Parece que no hay incorporado, al less para LocalDate

Bueno, siempre puedes usar el viejo patrón chulo-mi-biblioteca para agregar methods de tipo Range a las classs de interés.

 import java.time.LocalDate import java.time.temporal.ChronoUnit implicit class LocalDateRange(start: LocalDate) { // Note: LocalDate already has an until() method so can't add that here def to(end: LocalDate): IndexedSeq[LocalDate] = IndexedSeq.iterate( start , ChronoUnit.DAYS.between(start, end.plusDays(1L)).toInt )(_.plusDays(1L)) } 

Uso:

 val now = LocalDate.now() val vacation: IndexedSeq[LocalDate] = now to now.plusDays(10) 

Elegí IndexedSeq[] porque los documentos de Scala dicen que Range es "un caso especial de una secuencia indexada", por lo que parecía apropiado.

Scala no proporciona intervalo como class como Kotlin Range . Hay varias alternativas:

  • Escribe tu propia class de intervalo
  • Usa el range de guayaba
  • Usa la tupla como range, pero adminístrala tú mismo
  • Progtwigción funcional: cómo continuar el context para una cadena de reglas de validation
  • ¿Se puede usar Flink con Kotlin?
  • Sistema local de administración de packages Java en Python PIP style?
  • Usar varios lenguajes JVM en el mismo proyecto
  • Kotlin zipToda alternativa
  • Comstackción manual de JAR para Scala & Kotlin
  • Kotlin: llaves de varias expresiones (o declaraciones)
  • Convierta la function de Scala a la function de Kotlin
  • Tipo de function con receptor en Scala
  • ¿Es posible express kotlin 'con' método equivalente en Scala?
  • ¿Es posible mezclar Scala y Kotlin en el mismo module maven?