Kotlin中When语句出现类型不兼容错误排查
问题原因
你这段代码的问题出在when表达式的用法错误:
- 你写的
when(votersAge)是把votersAge(Int类型)作为匹配目标,但后面的分支条件(votersAge > 18)、(votersAge <= 18)都是Boolean类型的结果,Int和Boolean类型不兼容,所以编译器报出类型不匹配的错误。
修复方案
有两种正确的写法:
方案1:去掉when的参数,直接用条件分支
这种写法更适合做条件判断:
var votersAge = 17 var cardEligibility = when { votersAge > 18 -> true else -> false }
甚至可以简化成更简洁的表达式:
var votersAge = 17 var cardEligibility = votersAge > 18
方案2:保留when的参数,用范围/值匹配
如果想用带参数的when写法,可以这样写:
var votersAge = 17 var cardEligibility = when(votersAge) { in 19..Int.MAX_VALUE -> true else -> false }
内容的提问来源于stack exchange,提问作者Raghul G
相关产品推荐
相关产品推荐

