Build Status API Documentation Maven Central Sonatype Snapshot

Supported types based on Scala

EmptyIterator

Iterator based on the result of scala.collection.Iterator.empty, producing no values.

Kotlin defines an internal EmptyIterator, which can only be obtained indirectly from empty collections, e.g.:

emptyList<Nothing>().iterator()

SingletonIterator

Iterator based on the result of scala.collection.Iterator.single[A](elem: A), producing a single value.

An iterator for a singleton list is defined in Java, in a package-private static method java.util.Collections.singletonIterator(E e). It can only be obtained indirectly from a new instance of a singleton list, e.g.:

java.util.Collections.singletonList(element).iterator()

Option

Scala documentation Scala sources

Implementation differences:

Kotlin introduces its own null-safety mechanisms. Most of the times, Options can be replaced by nullable types in Kotlin, e.g.:

var number: Option<Int> = // …

number.map { it.toString() }.getOrElse { "" }

gives the same result as:

var number: Int? = // …

number?.let { it.toString() }.orEmpty()

However, Options might be useful whenever null values are not allowed, e.g. RxJava 2.x Observable.

Either

Scala documentation Scala sources

Implementation differences:

Unlike in Scala, this implementation is not right-biased, i.e. it is not possible to use Either.map {} instead of Either.right.map {}. However, the Scala convention that “dictates that Left is used for failure and Right is used for success” (Scala Standard Library Documentation) is still a preferred way of using this class.

Try

Scala documentation Scala sources

Implementation differences:

Build configuration

Maven

<dependency>
  <groupId>it.czerwinski</groupId>
  <artifactId>kotlin-util</artifactId>
  <version>1.0</version>
</dependency>

Gradle

implementation 'it.czerwinski:kotlin-util:1.0'