Kotlin中根据布尔值反转整数符号的简洁写法
Kotlin中简化
if (invert) -x else x的写法 当然有更简洁的写法,这里列举几种常用的:
利用布尔转整数运算:
由于Kotlin中Boolean可以通过toInt()方法转为整数(true对应1,false对应0),可以通过数学运算直接计算结果:x * (1 - 2 * invert.toInt())原理:当
invert为true时,1-2*1 = -1,结果为-x;当invert为false时,1-2*0=1,结果为x。使用
when表达式简化:when表达式可以写成更紧凑的单行形式:when(invert) { true -> -x; else -> x }这种写法和原if表达式逻辑完全一致,在部分场景下可读性更直观。
利用
takeIf结合 Elvis 运算符:
写法更偏向函数式风格,逻辑和原表达式一致:-x.takeIf { invert } ?: x逻辑是:如果
invert为true,则取-x;否则取x。
不过要说明的是,原有的if (invert) -x else x本身已经非常简洁易读,在大多数业务场景下都是最优选择。如果追求极致简洁,可以根据团队代码风格选择上面的方式。
内容的提问来源于stack exchange,提问作者user2452723
相关产品推荐
相关产品推荐

