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
  • Scala require () equivalente en Kotlin
  • ¿Por qué Kotlin comstack más rápido que Scala?
  • @uncheckedVariance en Kotlin?
  • Biblioteca Headless de una fuente para JVM y JavaScript
  • Genéricos reificados en Scala 2.10
  • Usar varios lenguajes JVM en el mismo proyecto
  • ¿Se puede usar Flink con Kotlin?
  • Kotlin: llaves de varias expresiones (o declaraciones)
  • ¿Es posible mezclar Scala y Kotlin en el mismo module maven?
  • ¿Existe un análogo Future.sequence en kotlin?
  • Clase de Json a Kotlin Data