I am using the following when-statement in Kotlin:
when(name) {
"Sun" -> print("Sun is a Star")
"Moon" -> print("Moon is a Satellite")
"Earth" -> print("Earth is a planet")
}
And I have a function foo().
This function should be executed for every case of the when-statement.
I tried:
when(name) {
"Sun" -> print("Sun is a Star")
"Moon" -> print("Moon is a Satellite")
"Earth" -> print("Earth is a planet")
foo()
}
But I get an error.
How do I make a foo() function call within the when-statement?
CodePudding user response:
Question is if list of name is exhaustive. If it is, you can do like Alexander Ivanchenko suggests:
when(name) {
"Sun" -> print("Sun is a Star")
/** other code goes here */
}
foo()
Else:
when(name) {
"Sun" -> {
print("Sun is a Star")
foo()
}
/** other code goes here */
}
CodePudding user response:
If you really want to fire foo() from when, you can define a function, let's call it fooPrint() that prints the provided message and then invokes foo():
fun fooPrint(message: String) {
print(message)
foo()
}
And use this function with when:
when(name) {
"Sun" -> fooPrint("Sun is a Star")
"Moon" -> fooPrint("Moon is a Satellite")
"Earth" -> fooPrint("Earth is a planet")
}
Alternatively, as I've said in the comment, you can simply invoke foo() outside your when expression:
when(name) {
"Sun" -> print("Sun is a Star")
"Moon" -> print("Moon is a Satellite")
"Earth" -> print("Earth is a planet")
}
foo()
