В первом случае проверяется, равен ли x
результат вызова parseInt(x)
, который не является функцией x
.
Любой случай, который оценивается как выражение, проверяется на равенство с x
. Невозможно создать случай, когда вы вызываете функцию для цели оператора when, и она проходит, если возвращает true. Ваши единственные варианты при работе с целью - проверить ее равенство, проверить, является ли она in
чем-то, или проверить, является ли она is
чем-то.
Чтобы сделать то, что вы пытаетесь, вам нужен оператор when без цели.
when {
myString.isNullOrBlank() -> removeValue()
else -> setValue(myString)
}