Home > Enterprise >  how can I delete When statement on this code (Kotlin)
how can I delete When statement on this code (Kotlin)

Time:08-17

        val customerInfo = when {
            visitor.isCustomer -> customerService.getCustomerInfo(visitorId )
            else -> null
        }

In this Code, visitor.isCustomer is Boolean ( true / false)

Now then, I don't like specify else -> null into the code. so i want to delete when statement and convert other ways..

How can I do that? (I prefer to convert it with StandardKt (like let, apply, also... ))

CodePudding user response:

You can just use an if/else

val customerInfo = if (visitor.isCustomer) customerService.getCustomerInfo(visitorId) else null
    

CodePudding user response:

You could do something like

val customerInfo = vistorId.takeIf { visitor.isCustomer }?.let { customerService.getCustomerInfo(it) }

But I think a when or if statement is cleaner and more readable. I think JetBrains coding convention would recommend an if statement instead of a when statement here.

CodePudding user response:

Hope this will be more readable.

  1. Without any additional things,

    val customerInfo = if (visitor.isCustomer) customerService.getCustomerInfo(visitorId) else null
    

With your own extension functions

2)Without infix: (condition).ifTrueElseNull{ return value}

inline fun <T> Boolean?.ifTrueElseNull(block: () -> T): T? {
        if (this == true) {
            return block()
        }
        return null
        }
    
        var a = visitor.isCustomer.ifTrueElseNull{customerService.getCustomerInfo(visitorId)}
  1. With infix: (condition) ifTrueElseNull{ return value}

    inline infix fun <T> Boolean?.ifTrueElseNull(block: () -> T): T? {
     if (this == true) {
         return block()
        }
     return null
     }
    
     var a = visitor.isCustomer ifTrueElseNull{customerService.getCustomerInfo(visitorId)}
    
  • Related