DEV Community

Cover image for Let's Code Kotlin: If, Else, When
Tavon
Tavon

Posted on • Edited on • Originally published at gatling.xyz

1

Let's Code Kotlin: If, Else, When

Kotlin was an easy language to switch to, with a very small learning curve. Most of it looks similar to it's Java counterpart, yet somehow easier. To go along with the other posts I have about switching from Java to Kotlin, today I'll go over a few basics just to make sure it's clear how easy the switch is: ifs, elses, and whens.

If & Else

Overall, Ifs and Elses don't change much. Outside of leaving off semicolons, you can use your knowledge of Java to watch if-else statements.


if (makeIntimidationCheck() >= DC)
    // intimidation success code
Enter fullscreen mode Exit fullscreen mode



var proficiencyBonus: Int

if (level >= 17) {
    proficiencyBonus = 6
} else if (level >= 13) {
    proficiencyBonus = 5
} else if (level >= 9) {
    proficiencyBonus = 4
} else if (level >= 5) {
    proficiencyBonus = 3
} else {
    proficiencyBonus = 2
}
Enter fullscreen mode Exit fullscreen mode


It's worth noting that there is no ternary operator in Kotlin, meaning you can't do var value = isSomething ? valueOne : valueTwo. That kinda makes me sad (I like the aesthetic, sue me), but an if-else can handle it just fine the same way.


var charismaSkillBonus = 3

var intimidationBonus = if (isProficientInIntimidation) proficiencyBonus + charismaSkillBonus else charismaSkillBonus
Enter fullscreen mode Exit fullscreen mode



var intimidationBonus = if (isProficientInIntimidation) {
    // other stuff
    proficiencyBonus + charismaSkillBonus
} else {
    // other stuff
    charismaSkillBonus
}
Enter fullscreen mode Exit fullscreen mode

When

In Java (and many other languages), you can use a Switch statement. In Kotlin, it's called when. Let's turn that previous example about proficiencyBonus into a much better when:


var proficiencyBonus = when (level) {
    1, 2, 3, 4 -> 2
    5, 6, 7, 8 -> 3
    9, 10, 11, 12 -> 4
    13, 14, 15, 16 -> 5
    17, 18, 19, 20 -> 6
}
Enter fullscreen mode Exit fullscreen mode


Eh, okay, that's probably not the best. Luckily, in my example, level can only be a number from 1 to 20. But, knowing this, when can modify that a bit, showing some of the complexities that a when can handle.


var proficiencyBonus = when (level) {
    in 1..4 -> 2
    in 5..8 -> 3
    in 9..12 -> 4
    in 13..16 -> 5
    in 17..20 -> 6
}
Enter fullscreen mode Exit fullscreen mode


Awesome! Much better, I think.

A when can also serve as a more direct replacement for an if-else chain. If you remove the argument, you can do whatever you want.


var proficiencyBonus = when {
    level >= 17 -> 6
    level >= 13 -> 5
    level >= 9 -> 4
    level >= 5 -> 3
    else -> 2
}
Enter fullscreen mode Exit fullscreen mode


‌---

There is some official Kotlin documentation that goes into a bit more depth on these things and more. Check it out and let me know in the comments or on Twitter (@GatlingXYZ) if you have any questions or want me to flesh anything out a bit more. The next post in my "Let's Code" series for Kotlin will be about Fors and Whiles, so stay tuned!

Sentry mobile image

App store rankings love fast apps - mobile vitals can help you get there

Slow startup times, UI hangs, and frozen frames frustrate users—but they’re also fixable. Mobile Vitals help you measure and understand these performance issues so you can optimize your app’s speed and responsiveness. Learn how to use them to reduce friction and improve user experience.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay