# Optional

@Serializable
data class Optional < T >(source)

This type represents T as not only potentially nullable data, but also as a data which can not be presented. This type will be useful in cases when T is nullable and null as valuable data too in time of data absence should be presented by some third type.

Let's imagine, you have nullable name in some database. In case when name is not nullable everything is clear - null will represent absence of row in the database. In case when name is nullable null will be a little bit dual-meaning, cause this null will say nothing about availability of the row (of course, it is exaggerated example)

#### See also

Optional.presented
Optional.absent
Optional.optional
Optional.onPresented
Optional.onAbsent

## Types

Companion
Link copied to clipboard
object Companion

## Properties

data
Link copied to clipboard
val data : T ?
dataPresented
Link copied to clipboard
val dataPresented : Boolean

## Functions

dataOrElse
Link copied to clipboard
inline fun < T > Optional < T >. dataOrElse (block: () -> T ): T

Returns Optional.data if Optional.dataPresented of this is true, or call block and returns the result of it

dataOrNull
Link copied to clipboard
fun < T > Optional < T >. dataOrNull (): T ?

Returns Optional.data if Optional.dataPresented of this is true, or null otherwise

dataOrThrow
Link copied to clipboard
fun < T > Optional < T >. dataOrThrow (throwable: Throwable ): T

Returns Optional.data if Optional.dataPresented of this is true, or throw throwable otherwise

mapOnAbsent
Link copied to clipboard
inline fun < T , R > Optional < T >. mapOnAbsent (block: () -> R ): R ?

Will call block when data presented (Optional.dataPresented == true)

mapOnPresented
Link copied to clipboard
inline fun < T , R > Optional < T >. mapOnPresented (block: ( T ) -> R ): R ?

Will call block when data presented (Optional.dataPresented == true)

onAbsent
Link copied to clipboard
inline fun < T > Optional < T >. onAbsent (block: () -> Unit ): Optional < T >

Will call block when data absent (Optional.dataPresented == false)

onPresented
Link copied to clipboard
inline fun < T > Optional < T >. onPresented (block: ( T ) -> Unit ): Optional < T >

Will call block when data presented (Optional.dataPresented == true)