Elye
Elye

Reputation: 60081

Kotlin nullability check if-else functional approach...How?

For simple check like

if (variable != null) {
   doSomething(variable)
}

We could change to

variable?.let { doSometing(it) }

However for a case with else

if (variable != null) {
   doSomething(variable)
} else {
   doOtherThing()
}

Is there a way of doing so in a single function? Is there something like either?

Upvotes: 3

Views: 7632

Answers (3)

Fenil Patel
Fenil Patel

Reputation: 1546

You can map null-able value if not null by using ternary operator to check not null condition with If...Else Statements.

Here, I had wrote some code snippet to check value null or not ,

Case 1: value initialized

  fun main(args: Array<String>) {

   val value:Int ?= 10

   val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..."

   println(mapped)
}

You gotta result: Value is == 10

Case 2: value set remains null

  fun main(args: Array<String>) {

   val value:Int ?= null

   val mapped = value?.let { "Value is == $value" } ?: "Value not initialized..."

   println(mapped)
}

You gotta result: Value not initialized...

Upvotes: 0

jasiek.miko
jasiek.miko

Reputation: 481

Another approach which might ring well with functional style is the use of when, which is very close to pattern matching:

when(variable) {
    null -> doOtherThingSomething()
    else -> doSomething(variable)
}

I would argue, however, that you should be careful with abandoning the classic if statement, if what you're after is its natural purpose - conditional execution. If you're calculating a value in two different ways and then using it in the same way, this approach makes sense. But if your code paths diverge at this point and don't meet again, then if provides a clearer intent.

Upvotes: 0

diesieben07
diesieben07

Reputation: 1547

You can use the elvis-operator ?: like so:

variable?.let { doSomething(it) } ?: doOtherThing()

However personally I think that this gets quite unreadable very quickly. There is nothing wrong with an if-expression.

Upvotes: 3

Related Questions